如何使所有模型属性可用于批量分配?

时间:2012-01-22 15:02:23

标签: ruby-on-rails activerecord

我已经使用此应用程序配置选项无法访问rails应用程序中的所有属性:

config.active_record.whitelist_attributes = true

在大多数情况下,我在模型中使用attr_accessible定义了一些我想要访问的属性。如何使特定模型的所有属性都可访问。类似于attr_accessible :all

2 个答案:

答案 0 :(得分:29)

您可以通过调用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

答案 1 :(得分:13)

我发现这种方法更具可读性:

class User < ActiveRecord::Base
  attr_accessible *column_names
end

更改config.active_record.whitelist_attributes会影响您的所有模型,而这只适用于一个模型。

attr_protected方式也有效,但我发现它令人困惑(因为它与乍一看似乎相反)。