我遇到了BCrypt密码夹具的问题:我的User
模型都是用has_secure_password
和validates_presence_of :password
设置的。
关键是BCrypt使用password
和password_confirmation
,但在模式中只有password_digest
字段。
夹具抱怨password
字段不存在。
我怎么能避免这个?
谢谢
似乎固定装置直接被推送到数据库。这意味着你需要在你的灯具中使用password:
而不是password_digest:
:
test_user:
email: "[email protected]"
password_digest: <%= BCrypt::Password.create('testpassword', cost: 5) %>
当使用基于bcrypt的密码与has_secure_password
时。正如评论中所提到的,cost
参数是可选的。如果您不使用它,将使用合理的默认值。
我在模型测试中使用设置功能解决了这个问题。我们可以在设置中定义对象并通过测试文件使用它。
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
...