Rails质量赋值定义和attr_accessible使用

rtf*_*inc 17 ruby-on-rails mass-assignment

只是想明确什么是质量分配以及如何围绕它进行编码.是质量分配许多领域的使用哈希的分配,即喜欢..

@user = User.new(params[:user])
Run Code Online (Sandbox Code Playgroud)

为了防止这种情况,你可以使用attr_accessible:

attr_accessible :name, :email
Run Code Online (Sandbox Code Playgroud)

因此,像管理员这样的字段无法通过批量分配添加?

但是我们可以通过以下方式在代码中修改它:

@user.admin = true
Run Code Online (Sandbox Code Playgroud)

那么,如果我们没有attr_accessible,那么一切都可以进行质量分配吗?

最后一个棘手的问题......是否真的即使有一个attr_accessible如"attr_accessible:name"也意味着所有其他字段现在都无法进行大规模分配?

Srd*_*jic 12

你所有的假设都是正确的.没有attr_accessible,所有字段都可以进行批量分配.如果您开始使用attr_accessible,则只有您指定的字段才能进行质量分配.


til*_*ryj 6

正如Srdjan所指出的,你所有的假设都是正确的.你知道,还有一个attr_protected方法,与attr_accessible相反.

换一种说法

attr_protected :admin
Run Code Online (Sandbox Code Playgroud)

将阻止:管理员被批量分配,但将允许所有其他字段.