Rails FriendlyId и normalize_friendly_id

Пытаюсь запустить в моем приложении гем FriendlyId (версия 4.0.1)

Я думаю, что делаю это в неправильном порядке, но я хочу удалить апострофы перед моим слаг friendly_id генерируется при создании новой записи. Но я думаю, что метод normalize_friend_id вызывается после того, как идентификатор уже сгенерирован.

Я добавил в свою модель следующее:

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

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

end

person jordan.baucke    schedule 27.05.2012    source источник


Ответы (1)


super сначала вызывает суперкласс, что означает, что дружественный идентификатор генерируется, а затем вы запускаете 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

or

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

надеюсь, это поможет

person Matenia Rossides    schedule 07.06.2012