6

试图让我的应用程序运行FriendlyId gem(版本 4.0.1)

我认为我这样做的顺序错误,但我想在创建新记录时生成friendly_id slug之前去掉撇号。但是我认为在已经生成 id 之后调用了normalize_friend_id方法。

我已将以下内容添加到我的模型中:

class Team < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, :use => :slugged

  def normalize_friendly_id(string)
    super.gsub("\'", "")
  end

end
4

1 回答 1

12

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

希望有帮助

于 2012-06-07T13:00:05.680 回答