我有一个使用rails_admin gem和MySql数据库的Rails4应用程序。
我有一个用户模型has_many
作业。现在,在rails_admin仪表板中,用户可以正常删除,除非它有一些作业。在这种情况下,外键失败,因为关系上没有定义dependent: :destroy
。 这是预期行为。
但是,不能获取"不能删除或更新父行:外键约束失败"错误我想要显示一条好消息:"如果用户有工作,则无法删除用户#34;。
是否有一种优雅的方法可以在rails_admin
中实现此目的而不进行自定义操作?
答案 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