如何获取可以批量分配的activerecord模型的属性列表

我想有一个可以批量分配的所有属性名称的列表。 我需要这个自定义表单生成器,不会添加输​​入字段默认情况下,不能批量分配。 例如,如果我有一个模型,如:

class Post < ActiveRecord::Base attr_protected :account belongs_to :author validates_presence_of :title, :author end 

我想作为一个结果列表包含:作者,:标题。

任何想法,如果这种方法存在? 或者我可以如何制作一个这样的指南?

如果你明确定义了attr_accessible,Post.accessible_attributes会覆盖它

除此之外,做这样的事情是笨重的,但工作:

 Post.new.attributes.keys - Post.protected_attributes.to_a 

前面提到的一些答案可能不适用于Rails 4。

您可以使用MyModel.attribute_names来获取表格属性数组,尽pipe这可能不会给您可分配的属性,因为Rails的这一方面随版本4而变化http://weblog.rubyonrails.org/2012/3/21/强大的参数/

只是使用

 Post.accessible_attributes 

这将返回该类可访问的所有属性

对于模型,您可以使用MyModel.attribute_namesMyModel.column_names

例如,你可以使用MyModel.new.attribute_names

Post.accessible_attributes.to_a.map(&:to_sym)