Как сделать все атрибуты модели доступными для массового присвоения?

Я сделал все атрибуты в приложении 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, но я нахожу его сбивающим с толку (поскольку он делает противоположное тому, что, кажется, на первый взгляд).