我正在使用Ruby on Rails 3.0.9,我想知道attr_accessible
方法在哪些情况下(即哪些方法)有效。例如,如果我使用
attr_accessible :name, :surname
当您对new(...)
语句使用User.new(params[:user])
方法时,它会关注不分配这些属性值。
但还需要注意哪些其他方法? 我可以正确运行,例如where(...)
和exists?(...)
方法,而不是{{1}会生效吗?
答案 0 :(得分:3)
如果您使用attr_accessible
,模型将阻止对attr_accessible
列表中未包含的列进行大量分配。受影响的方法包括mass assignment
,new
,create
,update_attributes
,attributes=
等。所有其他功能都可以使用,即使是这样的单一分配:< / p>
@model_object.column_not_listed_in_attr_accessible_list = "Saved"
@model_object.column_not_listed_in_attr_accessible_list
=> "Saved"
因此,在where
,exists?
等中使用它们应该没有任何问题。
答案 1 :(得分:2)
attr_accessible
将仅影响与写操作相关的函数。
Ex:new,create,update_attributes等。
其他只读函数,例如where,exists?等应该没有任何影响。