Как сделать все атрибуты модели доступными для массового присвоения?
Я сделал все атрибуты в приложении rails недоступным с помощью этой опции настройки приложения:
config.active_record.whitelist_attributes = true
В большинстве случаев я определяю несколько атрибутов, которые я хочу получить доступными, используя attr_accessible
в моделях. Как сделать доступными все атрибуты конкретной модели. Что-то вроде attr_accessible :all
.
Ответы
Ответ 1
Вы можете сделать все доступные атрибуты, вызвав attr_protected
без таких аргументов:
class User < ActiveRecord::Base
# roughly speaking sets list of model protected attributes to []
# making all attributes accessible while mass-assignment
attr_protected
end
Ответ 2
Я нашел этот подход более читаемым:
class User < ActiveRecord::Base
attr_accessible *column_names
end
Изменение параметров config.active_record.whitelist_attributes повлияет на все ваши модели, тогда как это применимо только к одной модели.
Также защищен способ attr_protected, но я нахожу его сбивающим с толку (поскольку он делает противоположное тому, что, кажется, на первый взгляд).