Я создаю приложение Rails, используя ActiveAdmin, Globalize и FriendlyId.FriendlyId не обновляет slug на названии изменен
В моей модели я рассчитался на глобализацию и FriendlyId параметров (выдержка):
class Post < ActiveRecord::Base
translates :title, :slug, :content
active_admin_translates :title, :slug, :content do
validates :title, presence: true
end
extend FriendlyId
friendly_id :slug_candidates,
use: [:slugged, :history, :globalize, :finders]
private
def slug_candidates
[[:title, :deduced_id]]
end
# Used to add prefix number if slug already exists
def deduced_id
count = Post.where(title: title).count
return count + 1 unless count == 0
end
end
Однако, когда я обновляю название статьи в ActiveAdmin, слизняк никогда не обновляется friendly_id, поэтому я добавил этот метод :
def should_generate_new_friendly_id?
title_changed? || super
end
Когда я это делаю, title_changed? всегда false, поскольку новое название не отправляется в модель по той причине, которую я не знаю, но для других параметров, которые не переведены, они получены правильно.
Ex:
logger.debug(title) # => Give me new updated title value BUT
title_changed? # => Always nil
online_changed? # => Works
Как это возможно, что модель не знает об обновлении переводимых атрибутов?
Что я пропустил?
Благодарим за помощь!
My Project:
- Rails 4.2.7.1/рубин 2.3.0
- ActiveAdmin 1.0.0pre4
- Globalize 5.0.1
- FriendlyId 5.1.0
- FriendlyId Globalize 1.0.0.alpha2
Edit: (Выдержка из моей формы)
f.translated_inputs 'Translated fields', switch_locale: true do |t|
t.input :title
t.input :content
end
Спасибо, но у меня нет никакого «слизняк» поля ввода в моей форме (я редактировал мой вопрос добавления формы экстракта). И когда я создаю новое сообщение, slug правильно устанавливается для всех языков. – anthony