You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 4.2中如何覆写Devise的self.friendly_token方法?

没问题,在Rails 4.2里覆写Devise的friendly_token方法很简单,只需要通过初始化文件重新定义这个方法就行,具体操作如下:

步骤1:创建初始化文件

在你的Rails应用的config/initializers目录下新建一个文件,比如命名为devise_friendly_token_override.rb(文件名可以自定义,只要放在initializers目录下就会在Rails启动时自动加载)。

步骤2:重写目标方法

在这个新文件里,打开Devise模块并重新定义friendly_token类方法,把你需要的修改加进去:

# config/initializers/devise_friendly_token_override.rb
module Devise
  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
end

步骤3:重启服务器

因为初始化文件只会在Rails启动时加载,所以修改完成后需要重启你的Rails服务器,新的方法逻辑才会生效。

小提示:这里要注意tr方法的规则——如果第一个参数的字符数量比第二个多,多出的字符会被直接替换为空字符串。比如你现在的写法里,-会被直接删除;如果是想把-替换成某个特定字符(比如下划线),可以把第二个参数改成sxyz_,保证两个字符串长度一致,这样每个字符都能对应到替换项。

内容的提问来源于stack exchange,提问作者petrov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:01:59