首页 > 解决方案 > 如何更改 rails_admin 中删除操作的自定义错误消息?

问题描述

在 RailsAdmin 中删除一种项目之前,我进行了验证:

 before_destroy :dont_delete_master_list

 def dont_delete_master_list
    if name == MASTER_LIST_NAME
      errors.add :base, "You can't delete a Master List"
      throw(:abort)
    end 
  end

我想在 Rails 管理视图上显示此自定义消息:“您无法删除主列表”,但我得到的是:

在此处输入图像描述

如何在 RailsAdmin 中自定义错误消息?

标签: rubyrails-adminruby-on-rails-6

解决方案


您只需要切换到使用带有自定义消息的验证

validate :dont_delete_master_list

 def dont_delete_master_list
    if name == MASTER_LIST_NAME
      errors.add :base, "You can't delete a Master List"
      throw(:abort)
    end 
  end

您可能不想在 rails admin 之外运行此验证。如果是这种情况,您可以添加一个仅存在于 rails 管理表单上的虚拟字段。你可以这样做

attr_accessor :edited_on_rails_admin

rails_admin do
  edit do
    field :edited_on_rails_admin, :hidden do
      virtual?
      default_value true
    end
  end
end

然后在您的验证中使用该值

validate :dont_delete_master_list, if: edited_on_rails_admin

推荐阅读