Удаление одного перевода из модели в проекте Rails с использованием Mobility
Я перевожу проект Rails с Globalize на Mobility. Благодаря Globalize я получил доступ к текущему переводу через translation
метод:
feature.translation
Я использовал это в основном при управлении переводами для модели, чтобы удалить конкретный перевод:
feature.translation.destroy
С Globalize для каждого объекта я получаю список переводов и создаю кнопку удаления для каждого:
<%= link_to 'x', admin_feature_path(list_item, translation_locale: l), method: :delete, data: { confirm: %(Are you sure you want to delete this #{humanize_locale l} translation? This cannot be undone.) } %>
Я использую локаль, переданную по ссылке, чтобы удалить соответствующий перевод:
Mobility.with_locale(translation_locale) do
@feature.tranlsation.destroy
end
Есть ли прямой способ удаления одного перевода из модели с несколькими переводами?
1 ответ
Здесь нет ничего особенного в мобильности. У вас есть модель с ассоциацией translations
каждый translation
имеет locale
,
Таким образом, чтобы уничтожить перевод, вы можете просто найти его и уничтожить:
translation = feature.translations.find { |t| t.locale == Mobility.locale.to_s }
translation.destroy
Если вам нужен такой метод, как у Globalize, просто добавьте его в свою модель:
def translation
translations.find { |t| t.locale == Mobility.locale.to_s }
end
Это оно!