我一直在devise-two-factor用户模型上使用devise gem。当我尝试从模型中删除gem时,在创建用户记录时出现以下错误:
ActiveModel :: UnknownAttributeError:User的未知属性'password'。 c:/test_app/db/seeds.rb:6:in
<top (required)>' bin/rails:4:in
require' bin / rails:4:在''
这是我之前在我的模型中设计的设计:
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: 'demo@example.com', first_name: 'demo', last_name: 'account', password: '12345678', username: 'demo')
demo_user.encrypted_password
demo_user.skip_confirmation!
如何删除这两行会影响模型的password
属性?那段代码片段是我唯一改变过的。
答案 0 :(得分:2)
demo_user = User.create(email: 'demo@example.com', first_name: 'demo', last_name: 'account', password: '12345678', username: 'demo')
有你的问题。您尝试在新password
上设置User
属性,但设计User
模型没有password
属性。
设计用户具有encrypted_password
属性,但是在创建用户时由Devise生成,并且您可能不应该尝试自己填充它。它不是加密password
属性的方法。
答案 1 :(得分:2)
two_factor_authenticatable
的解释是:如果您的模型具有某种形式的:authenticatable
,则Devise只能使用密码。
请尝试添加:database_authenticatable
,而Devise应该能够正确分配密码。
如果这没有帮助,请参阅设计文档了解更多信息:https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview#using-omniauth-without-other-authentications