В этом случае весь успокоительный глагол находится под единой всей транзакцией? То есть, если я поднимаю ошибку в проверке или обратном вызове в любой момент обработки операций UPDATE, DELETE или CREATE, будет ли снова выполняться каждая операция базы данных, которую я мог выполнить в предыдущих обратных вызовах? Вкратце, возникает ли повышение ошибки при любом обратном вызове или валидации, чтобы это не делало никаких изменений в базе данных для действия этого глагола?Когда транзакции начинаются при использовании (успокоительных) рельсов
ответ
В этом случае весь успокоительный глагол находится под единой всеохватывающей сделкой? не
Нет
если я поднимаю ошибки в проверке или обратных вызовов в любой момент обработки в UPDATE, DELETE или CREATE операции, есть все операции с базой данных, что я, возможно, выполнены в предыдущем обратные вызовы также откатываются назад?
No.
делает поднимая ошибки на любой обратный вызов или проверки сделать это таким образом, что никаких изменений вообще не происходит в базе данных для этого глагола действия?
No.
Если вы хотите это поведение, вы можете либо явно создавать транзакции в контроллере (см примеров, представленные другими пользователями), или использовать around_filter
прикрепить поведение всех успокоительные действий.
Некоторые методы (создавать, уничтожать) немедленно перейти к базе данных. Сделки происходят с использованием метода транзакций на классы, производные от ActiveRecord следующим образом: (. Этот пример для нескольких баз данных для одной базы данных, вам нужно всего лишь одну сделку.)
Student.transaction do
Course.transaction do
course.enroll(student)
student.units += course.units
end
end
Вы можете откатить по этим транзакциям, а исключения, возникающие в транзакции, распространяются после откат.
Это зависит от базы данных, имеющей транзакции.
NB: сохранение и уничтожение завернуты в транзакции.
По умолчанию в транзакции нет кода базы данных, вы должны сообщить ему об этом в коде.
def create
Model.transaction do
Model.create!(params[:model])
Model.association.create!(params[:association])
end
rescue ActiveRecord::RecordNotSaved, ActiveRecord::RecordInvalid
flash[:notice] = "That record could not be saved."
render :action => "new"
end
Использование # создания! методы попытаются сохранить запись, и если они потерпят неудачу, они вызовут исключение, которое затем отбросит любой код, уже выполненный внутри блока транзакций.
Если вы не спасёте действие, вы будете перенаправлены (я думаю) на 405.html в ваш общий каталог, если он существует.
- 1. добавить динамический атрибут успокоительных маршрутов рельсов
- 2. Sequlize callback при использовании транзакции
- 3. Когда начинаются события asyncExec?
- 4. 403 Запрещено при использовании nginx + рельсов + пассажир
- 5. ошибка маршрутизации рельсов только при использовании ajax
- 6. Сброс Уровень изоляции при использовании транзакции Scop
- 7. ошибка handleRoutingException при маршрутизации успокоительных контроллеров
- 8. Когда переходы CSS начинаются?
- 9. Проверка рельсов с заводами. Проблема уникальности транзакции
- 10. Получение рельсов ошибка при использовании Spaceship :: Tunes
- 11. Предупреждение об изъятии при использовании рельсов Compass
- 12. Ошибка StackOverflow при использовании ORM внутри транзакции
- 13. успокоительных форматирование URL-адресов
- 14. YII2 успокоительных 404
- 15. Json От успокоительных
- 16. Rails: половина успокоительных маршруты
- 17. Возьмите окружение рельсов при запуске, когда
- 18. несколько действий начинаются, когда нажимают
- 19. Ошибки при развертывании рельсов на сервере при использовании установки пакета
- 20. Границы транзакций JTA CMT - где начинаются и заканчиваются транзакции?
- 21. Ошибка при использовании распределенной транзакции в SQL Server 2008 R2
- 22. обработка ситуаций redis maxmemory с рельсами при использовании кэширования рельсов
- 23. Как предотвратить загрязнение объекта рельсов при использовании form_for и .new?
- 24. SQL Server Откат моей транзакции при использовании THROW
- 25. Невозможно добавить collection_select при использовании материализованных рельсов 4.2
- 26. Решение успокоительных аутентификации через HTTPS
- 27. Неожиданное «<» ошибка на пост при использовании Почтальон и рельсов
- 28. Неизвестная ошибка поставщика провайдера при использовании угловых и рубиновых рельсов
- 29. Ошибка SqlServer.Management.SMO.Server при начале транзакции
- 30. Получение BeanCreationException в bean-компоненте при использовании транзакции
Вам не нужно влагать такие транзакции. Любые обращения к .transaction просто передаются в ActiveRecord :: Base. Вы буквально просто вызываете ActiveRecord :: Base.transaction дважды – 2008-09-23 23:35:34