带BCrypt的导轨夹具

问题描述 投票:6回答:2

我遇到了BCrypt密码夹具的问题:我的User模型都是用has_secure_passwordvalidates_presence_of :password设置的。

关键是BC​​rypt使用passwordpassword_confirmation,但在模式中只有password_digest字段。

夹具抱怨password字段不存在。

我怎么能避免这个?

谢谢

ruby-on-rails fixtures bcrypt
2个回答
12
投票

似乎固定装置直接被推送到数据库。这意味着你需要在你的灯具中使用password:而不是password_digest:

test_user:
  email: "[email protected]"
  password_digest: <%= BCrypt::Password.create('testpassword', cost: 5) %>

当使用基于bcrypt的密码与has_secure_password时。正如评论中所提到的,cost参数是可选的。如果您不使用它,将使用合理的默认值。


-1
投票

我在模型测试中使用设置功能解决了这个问题。我们可以在设置中定义对象并通过测试文件使用它。

def setup
    @user = User.new
    @user.name = 'Brunoid'
    @user.email = 'brunoid@localhost'
    @user.phone = '(01)2345-6789'
    @user.cpf = '123.456.789-10'
    @user.password = 'segamastersystem'
    @user.password_confirmation = 'segamastersystem'
    @user.card = Card.first
end

test 'must validate' do
    assert @user.valid?
end
...
© www.soinside.com 2019 - 2024. All rights reserved.