Обработка ошибок в транзакциях ActiveRecord? - PullRequest
38 голосов
/ 21 декабря 2009

Мне нужно создать строку в таблице заявок и пользователей ... Мне просто нужно знать, как обрабатывать информацию в случае сбоя транзакции.

@ticket.transaction do
    @ticket.save!
    @user.save!
end
    #if (transaction succeeded)
        #.....
    #else (transaction failed)
        #......
    #end

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

Ответы [ 2 ]

57 голосов
/ 21 декабря 2009

Если вы используете сохранение! метод с ударом (восклицательный знак), приложение будет выдавать исключение при сбое сохранения. Затем вам придется перехватить исключительную ситуацию для обработки ошибки.

begin
  @ticket.transaction do
    @ticket.save!
    @user.save!
  end
  #handle success here
rescue ActiveRecord::RecordInvalid => invalid
   #handle failure here
end
0 голосов
/ 21 декабря 2009

Я также новичок, но я считаю, что вы можете проверить @ ticket.errors и @ user.errors и проверить их ответы согласно их ответам

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...