¿Es el caso de que todo el verbo tranquilo se encuentre en una sola transacción que lo abarque todo? Es decir, si presento un error en la validación o devolución de llamadas en cualquier punto del manejo de una operación ACTUALIZAR, ELIMINAR o CREAR, ¿todas las operaciones de la base de datos que pude haber realizado en las devoluciones de llamada anteriores también se retrotraeron? De manera sucinta, ¿generar un error en una devolución de llamada o validación hace que no ocurra ningún cambio en la base de datos para esa acción verbal?¿Cuándo se inician las transacciones cuando se utilizan los raíles (de descanso)
Respuesta
¿Es el caso que todo el verbo tranquilo está en una única transacción que abarca todo?
Sin
si levanto un error en la validación o devoluciones de llamada en cualquier momento de la tramitación de un UPDATE, eliminar o crear la operación, es decir todas las operaciones de base de datos que pueda haber realizado en los anteriores las devoluciones de llamada también retrocedieron?
Nº
hace elevar un error en cualquiera de devolución de llamada o validación que sea tal que ningún cambio se produce en la base de datos para que la acción verbo?
Nº
Si desea este comportamiento puede crear explícitamente las transacciones en su controlador (ver los ejemplos proporcionados por otros usuarios), o utilizar un around_filter
para fijar el comportamiento de todas sus acciones de descanso.
Algunos métodos (crear, destruir) van a la base de datos inmediatamente. Las transacciones se realizan utilizando el método de transacción en clases derivadas de ActiveRecord de la siguiente manera: (. Este ejemplo es para múltiples bases de datos para una base de datos única, que sólo necesita una transacción.)
Student.transaction do
Course.transaction do
course.enroll(student)
student.units += course.units
end
end
Luego, puede deshacer en estas transacciones, y las excepciones arrojadas dentro de la transacción se propagan después de la reversión.
Esto depende de la base de datos que tenga transacciones.
NB: guardar y destruir están envueltos en transacciones.
Por defecto no hay código de base de datos escrito dentro de una transacción, necesita decirle que haga eso en el código.
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
Usando el #create! los métodos intentarán guardar el registro y, si fallan, generarán una excepción que luego revertirá cualquier código que ya se haya realizado dentro del bloque de transacción.
Si no rescatas la acción, serás redirigido a (creo) un 405.html en tu directorio público, si existe.
- 1. Android, detectar cuando se inician otras aplicaciones
- 2. ¿Cómo se inician los procesos de MPI?
- 3. ¿Cómo pruebo los raíles que inician sesión desde la consola?
- 4. no se inician los instrumentos con iOS6
- 5. no válida de emergencia cuando se utilizan los números octales
- 6. Trace LINQ cuando se utilizan uniones
- 7. boxeo cuando se utilizan los genéricos en C#
- 8. Android: transacciones SQLite cuando se utiliza ContentResolver
- 9. ¿Se inician los BroadcastReceivers de Android en un nuevo hilo?
- 10. ¿Para qué se utilizan las declaraciones dispinterface?
- 11. ¿Cuáles son los inconvenientes y las soluciones cuando se utilizan entornos virtuales de Python en Windows?
- 12. ¿Cómo se pueden evitar las dependencias circulares cuando se utilizan devoluciones de llamada?
- 13. ¿Cómo se inician los backends dinámicos en Google App Engine
- 14. Los trabajadores de Resque no se inician correctamente
- 15. App estrellarse cuando se utilizan las clases Accesibilidad Los para comprobar si hay conexión a Internet
- 16. ¿Por qué los ámbitos ARel se vuelven de solo lectura cuando se utilizan combinaciones?
- 17. garantías cuando se utilizan variables de usuario al número filas
- 18. PyQt_PyObject equivalente cuando se utilizan señales/ranuras de estilo nuevo?
- 19. Cambio de la Barra de acciones cuando se utilizan fragmentos
- 20. ¿Cuándo debería usar transacciones en mis consultas?
- 21. ¿Cuándo se necesitan las interfaces?
- 22. JUnit 4 @BeforeClass & @AfterClass cuando se utilizan Suites
- 23. cattr_accessor no funciona (raíles externos) cuando se requiere active_support?
- 24. ¿Son posibles índices complejos cuando se utilizan datos centrales?
- 25. $ .width() devuelve resultados diferentes cuando se utilizan fuentes personalizadas
- 26. Qué ORM es el mejor cuando se utilizan procedimientos almacenados
- 27. R - conservar el orden cuando se utilizan operadores coincidentes (% en%)
- 28. Problemas de los raíles cuando se conecta a la base de datos PostgreSQL
- 29. ¿Para qué se utilizan los diferentes formatos de NameID?
- 30. ¿Cuándo/por qué prefijar variables con "$" cuando se usa jQuery?
No necesita anidar las transacciones de esa manera. Cualquier llamada a .transaction acaba de pasar a ActiveRecord :: Base. Simplemente está llamando a ActiveRecord :: Base.transaction dos veces –
Este es un ejemplo de la documentación de rieles. –
¡Ah! Veo que se requiere para múltiples bases de datos. Actualizado. –