如何排除(或明确包含)传递给对象的参数,如下例所示:
def create
@something = Something.new(params[:something])
...
@something.save
end
比如说something
有一个字段trust_level
,不应该通过公共用户设置(允许创建对象)。即使提供的表单不包含此字段,也很容易通过HTTP发送此字段。那么如何防止将此字段传递给new
(或update_attributes
)方法?
答案 0 :(得分:4)
使用attr_accessible
定义可用于质量分配的内容。
(那是一个link to the docs,但这有点难以辨别,所以又来了。)
答案 1 :(得分:1)
另一种方式是filter out unwanted参数。以防万一你只想摆脱一个特定的参数,你不能使用attr_accessible(这是一个更好的解决方案)。
hsh.reject {| key, value | block } → a_hash
与
Hash#delete_if
相同, 但是工作(并返回)hsh的副本。相当于 hsh.dup.delete_if。enum.reject {| obj | block } → array enum.reject → an_enumerator