Rails_admin обработка ошибок внешнего ключа

88
12

У меня есть приложение Rails4, которое использует базу данных rails_admin и MySql.


У меня есть модель User, которая has_many Jobs. Теперь, в панели rails_admin, Пользователь может быть удален обычно, , если не имеет некоторых Рабочих мест. В этом случае внешний ключ выходит из строя из-за отсутствия dependent: :destroy, определяемого по отношению. Это предполагаемое поведение.


Однако вместо того, чтобы получать сообщение "Не удается удалить или обновить родительскую строку: ошибка ограничения внешнего ключа", я хотел бы показать хорошее сообщение: "Пользователь не может быть удален, если у него есть задания".


Есть ли элегантный способ достичь этого в rails_admin без создания пользовательского действия?

спросил(а) 2015-02-26T23:15:00+03:00 5 лет, 4 месяца назад
1
Решение
77

Добавьте 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

ответил(а) 2018-12-06T05:11:00+03:00 1 год, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема