You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails项目从Globalize迁移至Mobility:如何删除单个模型翻译?

如何在Mobility中删除模型的单个翻译

嘿,我之前刚把项目从Globalize迁移到Mobility,刚好能帮到你!Mobility其实提供了很简便的方法来删除单个locale的翻译,具体操作分两种情况,取决于你用的是哪种存储后端:

1. 表存储后端(Table Backend)

如果你的Mobility配置是用独立的翻译表(比如post_translations对应Post模型),有两种方式删除单个翻译:

方法一:直接操作翻译记录

你可以直接找到对应locale的翻译记录并销毁:

# 假设你的模型是Post,要删除法语翻译
@post.translations.find_by(locale: :fr).destroy

方法二:使用Mobility内置的remove_translation方法

Mobility提供了更简洁的API,直接调用即可:

@post.remove_translation(:fr)
# 或者用 bang 版本自动保存
@post.remove_translation!(:fr)

2. JSONB/列存储后端(Column Backend)

如果你的翻译存在模型表的JSONB/JSON字段里(比如translations字段),同样可以用remove_translation方法,它会自动把对应locale的键从JSON结构中移除:

@post.remove_translation(:es)
@post.save # 或者用 remove_translation! 自动触发保存

实战示例:在视图中添加删除按钮

和你之前用Globalize的思路类似,你可以在管理页面为每个已翻译的locale添加删除按钮,步骤如下:

第一步:添加路由

在routes.rb中为模型添加删除翻译的动作:

resources :posts do
  delete :destroy_translation, on: :member
end

第二步:控制器处理动作

在对应的控制器(比如PostsController)中添加处理方法:

def destroy_translation
  @post = Post.find(params[:id])
  # 把参数里的locale转成符号
  locale = params[:locale].to_sym
  if @post.remove_translation!(locale)
    redirect_to edit_post_path(@post), notice: "#{locale.to_s.upcase} translation deleted successfully!"
  else
    redirect_to edit_post_path(@post), alert: "Failed to delete translation."
  end
end

第三步:视图中渲染删除按钮

在编辑页面循环所有可用locale,为已有翻译的locale显示删除按钮:

<% I18n.available_locales.each do |locale| %>
  <div class="translation-item">
    <h3><%= locale.to_s.upcase %> Translation</h3>
    <!-- 这里放翻译表单字段 -->
    <% if @post.translated?(locale) %>
      <%= link_to "Delete #{locale} Translation", 
                  destroy_translation_post_path(@post, locale: locale),
                  method: :delete,
                  data: { confirm: "Are you sure you want to delete this translation?" },
                  class: "btn btn-danger" %>
    <% end %>
  </div>
<% end %>

这里用到的translated?方法是Mobility提供的,用来检查模型是否有对应locale的有效翻译,避免显示不必要的删除按钮。

内容的提问来源于stack exchange,提问作者partydrone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:26:29