Определение массового назначения Rails и использование attr_accessible - PullRequest
17 голосов
/ 11 марта 2011

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

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

И для предотвращения этого вы используете attr_accessible например:

attr_accessible :name, :email

Чтобы поле типа: admin не могло быть добавлено массовым присваиванием?

Но мы можем изменить его в коде, например:

@user.admin = true

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

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

Ответы [ 3 ]

12 голосов
/ 11 марта 2011

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

6 голосов
/ 12 марта 2011

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

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

attr_protected :admin

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

3 голосов
/ 02 марта 2013

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

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

...