Подтвердить что ты не робот

Определение массового назначения Rails и attr_accessible use

Просто хочу понять, что такое массовое задание и как его кодировать. Является массовым присваиванием присвоением многих полей с использованием хеша, т.е. Как..

@user = User.new(params[:user])

И чтобы предотвратить это, вы используете attr_accessible, например:

attr_accessible :name, :email

Так что поле, подобное: admin, не может быть добавлено массовым назначением?

Но мы можем изменить его в коде следующим образом:

@user.admin = true

Итак, верно ли, что если у нас нет attr_accessible, тогда все доступно для массового присваивания?

И, наконец, сложная точка... верно, что даже при одном attr_accessible, таком как attr_accessible: name, означает, что все остальные поля теперь не доступно для массового присвоения?

4b9b3361

Ответ 1

Все ваши предположения верны. Без attr_accessible все поля открыты для массового присвоения. Если вы начинаете использовать attr_accessible, только поля, которые вы указали, открыты для массового назначения.

Ответ 2

Как указано Srdjan, все ваши предположения верны. Как вы знаете, существует также метод attr_protected, который является противоположным attr_accessible.

Другими словами

attr_protected :admin

предотвратит: назначение администратора будет назначено массой, но разрешит все остальные поля.

Ответ 3

Ответ Srdjan правильный, если config.active_record.whitelist_attributes установлен в false в config/application.rb.

Если установлено значение true, все атрибуты будут защищены от массового назначения по умолчанию, если не используются attr_accessible или attr_protected.