Básicamente, lo que quiero hacer es registrar una acción en MyModel en la tabla de MyModelLog. Aquí hay un código de pseudo:¿Cómo guardar algo en la base de datos después de las validaciones fallidas de ActiveRecord?
class MyModel < ActiveRecord::Base
validate :something
def something
# test
errors.add(:data, "bug!!")
end
end
También he un modelo con este aspecto:
class MyModelLog < ActiveRecord::Base
def self.log_something
self.create(:log => "something happened")
end
end
Con el fin de iniciar la sesión intenté:
Añadir
MyModelLog.log_something
en el método desomething
MyModel
Llamada
MyModelLog.log_something
sobre la devolución de llamada deafter_validation
MyModel
En ambos casos, la creación se revierte cuando la validación falla porque está en la operación de validación. Por supuesto, también quiero iniciar sesión cuando las validaciones fallan. Realmente no quiero iniciar sesión en un archivo o en otro lugar que no sea la base de datos porque necesito las relaciones de las entradas de registro con otros modelos y la capacidad de hacer solicitudes.
¿Cuáles son mis opciones?
Tipo similar de pregunta: http://stackoverflow.com/questions/3685912/how-do-i-exclude-a-model-from-a-transaction-in-activerecord/3686035#3686035 – Shadwell