我想要一个可以批量分配的所有属性名称的列表。我需要这个自定义表单构建器,默认情况下不会添加无法批量分配的输入字段。
例如,如果我有以下型号:
class Post < ActiveRecord::Base
attr_protected :account
belongs_to :author
validates_presence_of :title, :author
end
我希望得到[:author, :title]
。
答案 0 :(得分:95)
如果您明确定义了attr_accessible
,Post.accessible_attributes将覆盖它除此之外,做这样的事情很笨重但有效:
Post.new.attributes.keys - Post.protected_attributes.to_a
答案 1 :(得分:65)
前面提到的一些答案可能不适用于Rails 4。
您可以使用MyModel.attribute_names
来获取表属性数组,但是,这可能无法为您提供大量可分配属性,因为Rails的这个方面随版本4更改http://weblog.rubyonrails.org/2012/3/21/strong-parameters/
答案 2 :(得分:24)
答案 3 :(得分:17)
对于模特,您可以使用MyModel.attribute_names
或MyModel.column_names
。
例如,您可以使用MyModel.new.attribute_names
。
答案 4 :(得分:0)
Post.accessible_attributes.to_a.map(&:to_sym)