6

認証用のDeviseを備えたActiveAdminを使用してRailsを使用しています。User モデルが管理者を気にする必要がないように、AdminUser および User モデルがあります。ただし、管理者ページ内から管理者ユーザーもユーザーも作成/編集できません。そうしようとするたびに、メッセージが表示されます

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')

これは、管理 Web ページからの作成のみが失敗したことを意味します。

認証に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
4

1 に答える 1

8

私が変える

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

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

そしてそれは動作します。

于 2013-05-13T13:18:05.520 に答える