松散地关注Ryan Bates的How I Test Railscast,以便在用户注册时向用户发送电子邮件确认令牌。
class User < ActiveRecord::Base
has_secure_password
strip_attributes except: [:password, :password_confirmation]
...
def send_email_confirmation
generate_token(:email_token)
self.email_token_sent_at = Time.zone.now
save!
UserMailer.email_confirmation(self).deliver
end
private
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
end
这是失败的(在功能规格中以及手动点击注册过程时):
Failures:
1) UserPages sign up with valid information should create a user
Failure/Error: expect { click_button submit }.to change(User, :count).by(1)
BCrypt::Errors::InvalidSalt:
invalid salt
# ./app/models/user.rb:70:in `send_email_confirmation'
# ./app/controllers/users_controller.rb:27:in `create'
# ./spec/features/user_pages_spec.rb:165:in `block (5 levels) in <top (required)>'
# ./spec/features/user_pages_spec.rb:165:in `block (4 levels) in <top (required)>'
我已经尝试重新安装bcrypt gem(正如建议的elsewhere,即使它与Devise相关并且我没有使用Devise):gem uninstall bcrypt-ruby
然后gem install bcrypt-ruby
但无济于事。想法?
答案 0 :(得分:0)
Gem echo "</tbody>
</table>"
负责此类行为。
从下面的剥离中排除strip_attributes
属性:
:password_digest
答案 1 :(得分:0)
我们遇到了这个错误,这是因为我们试图在一个只有读数据库访问权限的 k8s pod 中执行一个写操作强>.
我确定这不是原始问题的答案,但是当我们试图找出导致我们出现此错误的原因时,我遇到了这个问题,因此我想分享。