Как получить список атрибутов модели activerecord, которые могут быть массово назначены
Я хотел бы иметь список всех имен атрибутов, которые могут быть назначены массы. Мне это нужно для пользовательского конструктора форм, который по умолчанию не будет добавлять поля ввода, которые не могут быть назначены массово. Например, если у меня есть модель, как:
class Post < ActiveRecord::Base
attr_protected :account
belongs_to :author
validates_presence_of :title, :author
end
Я хотел бы получить в результате список, содержащий :автор :название.
есть идеи, если такой метод существует? Или некоторые рекомендации о том, как я могу сделать один, что это?
5 ответов:
пост.accessible_attributes покроет его, если вы явно определили attr_accessible
за исключением того, что делать что-то вроде этого неуклюже, но работает:
Post.new.attributes.keys - Post.protected_attributes.to_a
некоторые из ранее упомянутых ответов могут не применяться для Rails 4.
можно использовать
MyModel.attribute_names
чтобы получить массив атрибутов таблицы, хотя это может не дать вам массовые присваиваемые атрибуты, поскольку этот аспект Rails изменяется с версией 4 http://weblog.rubyonrails.org/2012/3/21/strong-parameters/
просто использовать
Post.accessible_attributes
, что вернет все атрибуты доступны класса