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
相关产品推荐
相关产品推荐

