Все примеры сильных параметров в Rails 4 docs используют
params.require(:person).permit(:name, :age)
Может ли кто-нибудь, пожалуйста, разобрать и объяснить, что происходит с require
и permit
здесь?
ruby-on-rails-4
Эрик Траутман
источник
источник
permit
но не объясняетrequire
.Ответы:
Контроллер
params
in выглядит как Hash, но на самом деле это экземплярActionController::Parameters
, который предоставляет несколько методов, таких какrequire
иpermit
.В
require
методе гарантирует , что конкретный параметр присутствует, и если это не предусмотрено, тоrequire
метод выдает ошибку. Возвращает экземплярActionController::Parameters
ключа, переданного вrequire
.permit
Метод возвращает копию объекта параметров, возвращая только разрешенные ключи и значения. При создании новой модели ActiveRecord в модель передаются только разрешенные атрибуты.Он очень похож на белый список, который ранее был включен в модели ActiveRecord, но для него имеет больше смысла находиться в контроллере.
источник
true
наpermitted?
метод. По умолчанию экземплярActionController::Parameters
класса будет возвращенfalse
дляpermitted?
ответа,true
чтоpermitted?
означает, что объект параметра может использоваться в массовом назначении; иначе приложение выдаст ошибку ForbiddenAttributes.permit
наrequire
также разрешает и включать требуемые параметры в возвращенном объекте?Чтобы быть более точным, когда вы создаете для, например. при этом
.new(...)
должен быть:person
хеш, указанный в требовании, а хэш будет только принимать:name
и:age
указываться в разрешении.Пример:
источник
not okay
визуализируют 3-й и 4-й пример?