2013-05-13 86 views
6

我有一個Rails的ActiveAdmin與設計認證。我有AdminUser和User模型,以便用戶模型不必關心管理員。但是,我無法創建/編輯管理員用戶和用戶從內部管理頁面。每次我嘗試這樣做,它會給我消息ActiveAdmin:無法批量分配受保護的屬性:電子郵件,密碼,password_confirmation

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

這是奇怪的,因爲裏面的用戶模式和管理用戶的機型,我已經有了:

attr_accessible :email, :password, :password_confirmation 

要嘗試其他辦法,我去鐵軌控制檯,並嘗試建立一個管理用戶和它的所有工作:

AdminUser.create(:email => '[email protected]', 
    :password => 'password', :password_confirmation => 'password') 

這意味着從管理網頁只創建失敗。

我正在使用Devise進行身份驗證。用戶和AdminUser模型都會出現此錯誤。

對於密碼和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 
+2

也許你必須添加「:as =>:admin_user」到你的attr_accessible。我不知道active_admin gem的存在,但是例如如果你使用這個gem https://github.com/fesplugas/typus你必須指定當前用戶的角色:as =>:admin_user – Mattherick 2013-05-13 06:22:44

+0

我認爲這個問題會幫助你理解:as =>「your-role」better ..http://stackoverflow.com/questions/6877853/rails-how-to-declare-attr-accessible-for-mutliple-角色 - 不重複 – Mattherick 2013-05-13 06:24:28

+0

您的管理員創建表單的外觀如何?如果列出可能有幫助的服務器日誌。 – 2013-05-13 06:59:39

回答

8

我改變

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

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

和它的作品。

相關問題