Rails FriendlyId和normalize_friendly_id

时间:2012-05-27 19:40:56

标签: ruby-on-rails friendly-id

尝试让我的应用运行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

1 个答案:

答案 0 :(得分:10)

super首先调用超类,这意味着正在生成友好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

希望有所帮助