试图让我的应用程序运行FriendlyId gem (version 4.0.1)
我想我的执行顺序错误,但是在创建新记录时,我想在friendly_id slug is generated之前去除撇号。但是我认为在生成ID之后会调用 normalize_friend_id 方法。
我在模型中添加了以下内容:
class Team < ActiveRecord::Base
extend FriendlyId
friendly_id :name, :use => :slugged
def normalize_friendly_id(string)
super.gsub("\'", "")
end
end
最佳答案
super
首先调用父类(super class),这意味着将生成友好ID,然后在该结果上运行gsub。您真正想要的是完全重写此方法。
引用:https://github.com/norman/friendly_id/blob/master/lib/friendly_id/slugged.rb#L244-246
您的代码应如下所示:
def normalize_friendly_id(string)
string.to_s.gsub("\'", "").parameterize
end
或者
def normalize_friendly_id(string)
super(string.to_s.gsub("\'", ""))
end
希望能有所帮助
关于ruby-on-rails - Rails FriendlyId和normalize_friendly_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776706/