Как в Ruby on Rails правильно использовать model.build_model (откаты)?
Допустим, есть модели:
Subscriber
Address
Number
Такая связь у них :
Subscriber->Address->Phone
Subscriber->Number
Это значит, что Address содержит subsriber_id
А Number address_id, и subscriber_id.
Хочу при добавлении записей использовать .buld_association чтобы при неудачной ситуации произошел откат.
Так вот:
subs = Subscriber.create
subs.build_address
И при subs.save как я понимаю в address.subscriber_id автоматически присвоится id subscriber-a.
А вот и главный вопрос: а как быть если нужно, чтобы numbers сохранял и address_id и subsriber_id?
eldar_web: Обновил, добавил линк на описание, что такое транзации, в кратце, если хотя бы один из sql запросов будет не успешен(ошибка) все действия, которые выполнились внутри транзации "откатятся"
Andrey Demidenko: ActiveRecord::Base.transaction откатит транзакцию при любом необработанном исключении, неважно чем оно вызвано, ошибкой в sql-запросе или чем-то еще.
Andrey Demidenko: Спасибо. Ну вот я понял для чего используется транзакции. А вот как быть, если я асинхронно обрабатываю запрос и хочу получить статус от результата этих действий, т.е., как узнать итог?
Если сделать create! или save! то на страницу ругается ошибками.
Andrey Demidenko: Ну внутри транзакции в коде где именно написать такое? И как же обрабатывать, ведь там же нету переменной, которому присваивается значение результата, чтобы я мог узнать что внутри и обратно передать ajax-ом?