带BCrypt的导轨夹具

Bru*_*gia 8 ruby-on-rails fixtures bcrypt

我遇到了BCrypt密码的问题:我的User模型都设置为has_secure_passwordvalidates_presence_of :password.

重点是BCrypt使用password,password_confirmation但在模式中只有password_digest字段.

夹具抱怨该password字段不存在.

我怎么能避免这个?

谢谢

sil*_*rdr 13

似乎固定装置直接被推送到数据库.这意味着password:你需要password_digest:在你的灯具中代替:

test_user:
  email: "tester@testing.net"
  password_digest: <%= BCrypt::Password.create('testpassword', cost: 5) %>
Run Code Online (Sandbox Code Playgroud)

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

  • `cost` 是可选的,所以 `BCrypt::Password.create('password')` 有效 (2认同)
  • 我必须将 `&lt;% require 'bcrypt' %&gt;` 添加到固定文件的顶部才能使其工作。 (2认同)

Bru*_*gia -3

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

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
...
Run Code Online (Sandbox Code Playgroud)