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

时间:2013-05-13 05:37:33

标签: ruby-on-rails devise activeadmin mass-assignment

我正在使用带有Activeise身份验证的ActiveAdmin的Rails。我有AdminUser和User模型,因此User模型不必关心admin。但是,我无法在Admin页面中创建/编辑Adminuser或User FROM INSIDE。每次我尝试这样做,都会给我留言

Can't mass-assign protected attributes: email, password, password_confirmation

这很奇怪,因为在User模型和AdminUser模型中,我已经有了:

attr_accessible :email, :password, :password_confirmation

为了尝试其他方式,我去了rails控制台并尝试创建一个AdminUser,这一切都有效:

AdminUser.create(:email => 'asdf@admin2.com', 
    :password => 'password', :password_confirmation => 'password')

这意味着只有管理员网页的创建失败。

我正在使用Devise进行身份验证。 User和AdminUser模型都会发生错误。

对于password和password_confirmation,我在数据库中没有这些字段,但默认情况下是Devise的方式,它在数据库中从不拥有密码。

以下是用户模型:

devise :database_authenticatable, :registerable, :rememberable, :recoverable, :trackable, :omniauthable, :omniauth_providers => [:facebook]
         ##, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid

  # attr_accessible :title, :body
    validates :email, :password, :first_name, :last_name,
              presence: true
    validates :email, uniqueness: true

  has_many :devices
  has_many :posts

1 个答案:

答案 0 :(得分:8)

我改变了

attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid

attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid, :as => [:default, :admin]

它有效。