6

私のアプリにFriendlyIdgem(バージョン4.0.1)を実行させようとしています

これを間違った順序で行っていると思いますが、新しいレコードを作成するときに、friendly_idスラッグが生成される前にアポストロフィを削除したいと思います。しかし、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 に答える