2

我想用ActiveModel::SecurePassword实现 Rails 身份验证,但我不想在我的用户模型中出现“password_digest”列。我如何告诉 Rails 使用列“foo”而不是“password_digest”?

顺便说一句-我已经更正了这篇文章。我最初有"password"而不是"password_digest"。对不起!关于用户模型中的“password_digest”列,Ryan Bates 在他的 RailsCast 270-authentication-in-rails 中说“名称很重要,但您可以自定义它” 。我想知道怎么做?谢谢!

4

1 回答 1

1

从源代码来看,它看起来不像你可以......除非你想猴子修补这个方法......

# File activemodel/lib/active_model/secure_password.rb, line 34
def has_secure_password
  # Load bcrypt-ruby only when has_secure_password is used.
  # This is to avoid ActiveModel (and by extension the entire framework) being dependent on a binary library.
  gem 'bcrypt-ruby', '~> 3.0.0'
  require 'bcrypt'

  attr_reader :password

  validates_confirmation_of :password
  validates_presence_of     :password_digest

  include InstanceMethodsOnActivation

  if respond_to?(:attributes_protected_by_default)
    def self.attributes_protected_by_default
      super + ['password_digest']
    end
  end
end
于 2012-11-16T19:23:27.093 回答