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 require
i permit
tutaj?
ruby-on-rails-4
Erik Trautman
źródło
źródło
permit
ale nierequire
.Odpowiedzi:
W
params
kontrolerze wygląda jak Hash, ale w rzeczywistości jest instancjąActionController::Parameters
, która udostępnia kilka metod, takich jakrequire
ipermit
.Te
require
metoda gwarantuje, że konkretny parametr jest obecny, a jeśli nie jest podana,require
metoda wygeneruje błąd. Zwraca instancjęActionController::Parameters
klucza przekazanego dorequire
.permit
Metoda 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.
źródło
true
napermitted?
metodę. Domyślnie instancjaActionController::Parameters
klasy powrócifalse
dopermitted?
reagowaniatrue
napermitted?
drodze przedmiotem parametr może być stosowane w przypisania mas; w przeciwnym razie aplikacja zgłosi błąd ForbiddenAttributes.permit
włączonerequire
również pozwala i zawiera wymagane parametry w zwracanym obiekcie?Mówiąc dokładniej, gdy tworzysz np. robiąc
.new(...)
, musi istnieć:person
hash oznaczony wymaganiem, a osoba ta będzie akceptować:name
i:age
wskazywać na zezwolenie.Przykład:
źródło
not okay
wizualizują trzeci i czwarty przykład?