2017-05-14 20 views
2

我一直在使用我的devise用戶模型上的devise-two-factor寶石。當我嘗試從模型中移除寶石,我創建一個用戶記錄時收到以下錯誤:Rails,Devise:用戶的未知屬性'密碼'

ActiveModel::UnknownAttributeError: unknown attribute 'password' for User. c:/test_app/db/seeds.rb:6:in <top (required)>' bin/rails:4:in require' bin/rails:4:in `'


這裏是我以前的色器件集成在我的模型:

devise :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, 
     :omniauthable, 
     :invitable, 
     :two_factor_authenticatable, :two_factor_backupable, 
     :otp_secret_encryption_key => Settings.devise.two_factor.key, 
     :omniauth_providers => [:google_oauth2] 

而且我目前的積分:

devise :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, 
     :omniauthable, 
     :invitable, 
     :omniauth_providers => [:google_oauth2] 

我的種子:

demo_user = User.create(email: '[email protected]', first_name: 'demo', last_name: 'account', password: '12345678', username: 'demo') 
demo_user.encrypted_password 
demo_user.skip_confirmation! 

如何刪除這兩條線影響模型的password屬性?該代碼片段是我改變的唯一的東西。

+2

您可以將您的'DB/seeds.rb'文件的問題? – ArtOfCode

+0

@ArtOfCode我將它添加到標記 – jonhue

回答

2
demo_user = User.create(email: '[email protected]', first_name: 'demo', 
         last_name: 'account', password: '12345678', 
         username: 'demo') 

這是您的問題。您正嘗試在新的User上設置password屬性,但設計User型號沒有password屬性。

設計用戶擁有encrypted_password屬性,但是在創建用戶時由Devise生成,您可能不應該嘗試自行填充它。這不是一種加密password屬性的方法。

+0

我不認爲這是打算,因爲我的設計註冊形式與默認的'密碼'輸入也失敗。 – jonhue

+0

我仍然不知道爲什麼'password'取決於'two-factor'。隨着寶石一切正常。 – jonhue

+0

'User.create(email:'...',密碼:'12341234',password_confirmation:'12341234')'會用Devise保存一個加密的密碼。 – speedracr