rails_admin处理外键失败

时间:2015-02-26 20:15:14

标签: ruby-on-rails rails-admin

我有一个使用rails_admin gem和MySql数据库的Rails4应用程序。

我有一个用户模型has_many 作业。现在,在rails_admin仪表板中,用户可以正常删除,除非它有一些作业。在这种情况下,外键失败,因为关系上没有定义dependent: :destroy这是预期行为

但是,不能获取"不能删除或更新父行:外键约束失败"错误我想要显示一条好消息:"如果用户有工作,则无法删除用户#34;。

是否有一种优雅的方法可以在rails_admin中实现此目的而不进行自定义操作?

2 个答案:

答案 0 :(得分:2)

您无法自定义rails_admin的Flash错误消息,但可以导致错误并重定向到users的索引页面,而不是引发异常:

has_many :jobs, dependent: :restrict_with_error

答案 1 :(得分:0)

foreign_key: { on_delete: :cascade }添加到您的迁移中,例如:

class CreateComment < ActiveRecord::Migration[5.2]
  def change
    create_table :comments do |t|
      t.string :body
      t.references :post, foreign_key: { on_delete: :cascade }
      t.references :user, foreign_key: { on_delete: :cascade }

      t.timestamps
    end
  end
end