ruby-on-rails - una - relaciones entre modelos rails
Cómo obtener la lista de atributos de un modelo activerecord que puede asignarse en masa (5)
Me gustaría tener una lista de todos los nombres de atributos que se pueden asignar en masa. Lo necesito para un generador de formularios personalizado que no agregue campos de entrada de manera predeterminada que no se puedan asignar en masa. Por ejemplo, si tengo un modelo como:
class Post < ActiveRecord::Base
attr_protected :account
belongs_to :author
validates_presence_of :title, :author
end
Me gustaría tener como resultado una lista que contenga: autor,: título.
¿Alguna idea de si existe tal método? ¿O algunas pautas sobre cómo puedo hacer una que haga esto?
Es posible que algunas de las respuestas mencionadas anteriormente no se apliquen a Rails 4.
Puede usar MyModel.attribute_names
para obtener la matriz de atributos de la tabla, aunque esto podría no otorgarle atributos de asignación masiva, ya que este aspecto de Rails cambia con la versión 4 http://weblog.rubyonrails.org/2012/3/21/strong-parameters/
Para Modelos, puede usar MyModel.attribute_names
o MyModel.column_names
.
Por ejemplo, puede usar MyModel.new.attribute_names
.
Post.accessible_attributes lo cubriría si definiera explícitamente attr_accessible
Excepto que, hacer algo como esto es torpe pero funciona:
Post.new.attributes.keys - Post.protected_attributes.to_a
Post.accessible_attributes.to_a.map(&:to_sym)