Wszystkie przykłady mocnych parametrów w dokumentach Rails 4 są używane
params.require(:person).permit(:name, :age)
Czy ktoś mógłby zdekonstruować i wyjaśnić, co się dzieje z requirei permittutaj?
Wszystkie przykłady mocnych parametrów w dokumentach Rails 4 są używane
params.require(:person).permit(:name, :age)
Czy ktoś mógłby zdekonstruować i wyjaśnić, co się dzieje z requirei permittutaj?
Odpowiedzi:
W paramskontrolerze wygląda jak Hash, ale w rzeczywistości jest instancją ActionController::Parameters, która udostępnia kilka metod, takich jak requirei permit.
Te requiremetoda gwarantuje, że konkretny parametr jest obecny, a jeśli nie jest podana, requiremetoda wygeneruje błąd. Zwraca instancję ActionController::Parametersklucza przekazanego do require.
permitMetoda zwraca kopię obiektu parametrów, wracając tylko dozwolone klucze i wartości. Podczas tworzenia nowego modelu ActiveRecord do modelu przekazywane są tylko dozwolone atrybuty.
Wygląda bardzo podobnie do białej listy, która była wcześniej zawarta w modelach ActiveRecord, ale bardziej sensowne jest, aby znajdowała się w kontrolerze.
truena permitted?metodę. Domyślnie instancja ActionController::Parametersklasy powróci falsedo permitted?reagowania truena permitted?drodze przedmiotem parametr może być stosowane w przypisania mas; w przeciwnym razie aplikacja zgłosi błąd ForbiddenAttributes.
permitwłączone requirerównież pozwala i zawiera wymagane parametry w zwracanym obiekcie?
Mówiąc dokładniej, gdy tworzysz np. robiąc .new(...), musi istnieć :personhash oznaczony wymaganiem, a osoba ta będzie akceptować :namei :agewskazywać na zezwolenie.
Przykład:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay, other not permitted
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay, full_name not permitted
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person
not okaywizualizują trzeci i czwarty przykład?
permitale nierequire.