在设计中覆盖 self.friendly_token

Override self.friendly_token in devise

devise/lib/devise.rb中有一个方法叫做self.friendly_token:

def self.friendly_token(length = 20)
  # To calculate real characters, we must perform this operation.
  # See SecureRandom.urlsafe_base64
  rlength = (length * 3) / 4
  SecureRandom.urlsafe_base64(rlength).tr('lIO0', 'sxyz')
end

我想将 .tr('lIO0', 'sxyz') 更改为 .tr('lIO0-', 'sxyz') 并在我的应用程序中覆盖它,然后问题就开始了。我不知道怎么做。有人可以帮我吗?我正在使用 Rails 4.2.

我会将此代码放入 config/initializers/devise.rb 文件中:

module Devise
  def self.friendly_token(length = 20)
    # your implementation
  end
end

将此代码放入 config/initializers/ 文件夹中的哪个文件并不重要。也许更好的解决方案是添加一个像这样命名的新文件 config/initializers/devise_overrides.rb 并将代码放在那里。