无法批量分配受保护的属性:first_name,last_name,email,password,password_confirmation

时间:2012-05-29 09:04:27

标签: ruby-on-rails ruby-on-rails-3 activerecord attr mass-assignment

我有user模型使用devise gem,我没有attr_accessible任何字段仍然会收到错误:

  

无法批量分配受保护的属性

我的User课程如下

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, 
         :token_authenticatable  #, :validatable
end

4 个答案:

答案 0 :(得分:4)

我也有同样的问题,也许设计与attr_accessible有关。您需要在模型中设置attr_accessible才能使其正常工作。

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :token_authenticatable #, :validatable`

  # Setup accessible (or protected) attributes for your model
  attr_accessible :first_name, :last_name, :email, :password, :password_confirmation
end

您可以查看这些railscast剧集。

http://railscasts.com/episodes/209-introducing-devise

http://railscasts.com/episodes/210-customizing-devise

答案 1 :(得分:2)

如果我放attr_protected而不是attr_accessible,那么它对我有效 仅供参考,我使用Rails 3.2.3和Ruby 1.9.3

答案 2 :(得分:0)

自Rails 3.2.3起,config.active_record.whitelist_attributes中的config/application.rb默认为true。您必须为需要批量分配的属性手动设置attr_accessible(或者您可以将whitelist_attributes设置为false以禁用此行为。)

答案 3 :(得分:0)

我只设置了attr_accessible:name,:password,:password_confirmation,它正在工作, 在config \ application.rb中没有设置config.active_record.whitelist_attributes = false 只检查attr_accessible中