1

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

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

我的User班级如下

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

4 回答 4

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

您可以查看这些 railscasts 剧集。

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

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

于 2012-05-29T09:15:04.550 回答
2

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

于 2012-05-29T09:48:42.297 回答
0

我只设置了 attr_accessible :name, :password, :password_confirmation 并且它正在工作,而没有在 config\application.rb 中设置 config.active_record.whitelist_attributes = false 只检查 attr_accessible 中 _form.html.erb 中的 vars 的正确名称。

于 2013-04-01T14:30:11.457 回答
0

从 Rails 3.2.3 开始,默认情况下是 config.active_record.whitelist_attributesin 。您必须手动设置需要批量分配的属性(或者您可以设置为禁用此行为)。config/application.rbtrueattr_accessiblewhitelist_attributesfalse

于 2012-05-29T09:15:16.070 回答