Ответ 1
Все ваши предположения верны. Без attr_accessible все поля открыты для массового присвоения. Если вы начинаете использовать attr_accessible, только поля, которые вы указали, открыты для массового назначения.
Просто хочу понять, что такое массовое задание и как его кодировать. Является массовым присваиванием присвоением многих полей с использованием хеша, т.е. Как..
@user = User.new(params[:user])
И чтобы предотвратить это, вы используете attr_accessible, например:
attr_accessible :name, :email
Так что поле, подобное: admin, не может быть добавлено массовым назначением?
Но мы можем изменить его в коде следующим образом:
@user.admin = true
Итак, верно ли, что если у нас нет attr_accessible, тогда все доступно для массового присваивания?
И, наконец, сложная точка... верно, что даже при одном attr_accessible, таком как attr_accessible: name, означает, что все остальные поля теперь не доступно для массового присвоения?
Все ваши предположения верны. Без attr_accessible все поля открыты для массового присвоения. Если вы начинаете использовать attr_accessible, только поля, которые вы указали, открыты для массового назначения.
Как указано Srdjan, все ваши предположения верны. Как вы знаете, существует также метод attr_protected, который является противоположным attr_accessible.
Другими словами
attr_protected :admin
предотвратит: назначение администратора будет назначено массой, но разрешит все остальные поля.
Ответ Srdjan правильный, если config.active_record.whitelist_attributes
установлен в false
в config/application.rb
.
Если установлено значение true
, все атрибуты будут защищены от массового назначения по умолчанию, если не используются attr_accessible
или attr_protected
.