使用 Mobility 从 Rails 项目中的模型中删除单个翻译

Deleting a single translation from a model in a Rails project using 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.) } %>

我使用通过 link 传入的语言环境来删除相应的翻译:

Mobility.with_locale(translation_locale) do
  @feature.tranlsation.destroy
end

是否有直接的方法从具有多个翻译的模型中删除单个翻译?

这里的 Mobility 真的没有什么特别之处。您有一个关联 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

就是这样!