Rails :: Создание слагов с помощью FriendlyId, Globalize и slug_candidates

Я создаю приложение Rails, и я застрял при создании слага для статьи с заданным вторым языковым стандартом.
Для основного языкового стандарта (французский) проверяется, есть ли у статьи уже заголовок, и если это так, добавьте целое число (id) в конце, но для второй локали (английской) он просто генерирует слаг, не проверяя, существует ли статья (что дает мне дублированные слаги).

Вот моя модель:

class Post < ActiveRecord::Base
  translates :title, :slug, :content, fallbacks_for_empty_translations: true 
  active_admin_translates :title, :slug, :content, fallbacks_for_empty_translations: true 

  extend FriendlyId 
  friendly_id :slug_candidates, use: [:slugged, :globalize, :finders]

  private

  def slug_candidates
    [:title, [:title, :deduced_id]] # works for main locale but not others
  end

  def deduced_id
    self.class.where(title: title).count + 1
  end
end

Как я могу добавить идентификатор в ярлык для дополнительных локалей, когда статья с таким же заголовком уже существует?

Спасибо за вашу помощь !

Мой проект:

  • Рельсы 4.2.6
  • ActiveAdmin 1.0.0.pre2
  • Глобализация 5.0.1
  • Дружественный идентификатор 5.1.0
  • FriendlyId-глобализация 1.0.0.alpha2

person anthony    schedule 28.05.2016    source источник


Ответы (1)


Наконец-то я заработал, обновив метод slug_candidates следующим образом:

def slug_candidates
  [[:title, :deduced_id]]
end
person anthony    schedule 05.06.2016