2

У меня есть действие, которое обновить три таблицы сразу, как это:сохранение нескольких таблиц одновременно в рельсах

def action_save 
     @user.update(param_param_list1) 
     @application.update(param_list2) 
     @college.update(param_list3) 
    end 

, но чтобы сделать программу лучше, я хочу, чтобы либо сохранить все три вместе сразу или не все

+0

Как определить, сохранять ли их или нет? –

+1

Вы можете совершить сделку? – Geoffroy

ответ

6

Используйте ActiveRecord::Transaction:

def action_save 
    @college.transaction do 
    @user.update!(param_param_list1) 
    @application.update!(param_list2) 
    @college.update!(param_list3) 
    end 
end 

транзакция гарантирует, что все действия базы данных в этом блоке выполняются или если есть ошибка, что весь тр аннулирование отменяется.

Смежные вопросы