对mass_assignment_authorizer的更改会导致Ruby on Rails 3.1中的错误

dan*_*ave 3 ruby-on-rails mass-assignment ruby-on-rails-3

像在这个railscast中一样,防止质量分配在Rails 3.1中不再有效.

给出的错误是:

错误的参数个数(1表示0)

对于

app/models/user.rb:20:in `mass_assignment_authorizer'
Run Code Online (Sandbox Code Playgroud)

Mit*_*tch 9

如果你试图在Ryan的Railcasts中实现覆盖技术,但是使用Rails 3.1.0,那么将模型中的私有def重写为:

def mass_assignment_authorizer(role = :default)
 super + (accessible || [])
end
Run Code Online (Sandbox Code Playgroud)

我发现这清除了

wrong number of arguments (1 for 0)
Run Code Online (Sandbox Code Playgroud)

上面的错误(即只添加(role =:default),并且还与上面的答案相关联