В основном то, что я хочу сделать, - это зарегистрировать действие MyModel в таблице MyModelLog. Вот какой-то псевдокод:
class MyModel < ActiveRecord::Base
validate :something
def something
# test
errors.add(:data, "bug!!")
end
end
У меня также есть модель, которая выглядит примерно так:
class MyModelLog < ActiveRecord::Base
def self.log_something
self.create(:log => "something happened")
end
end
Для ведения журнала я попытался:
Добавить MyModelLog.log_something
в something
метод MyModel
Вызов MyModelLog.log_something
в обратном вызове after_validation
для MyModel
В обоих случаях создание откатывается, когда проверка не выполняется, поскольку это в транзакции проверки. Конечно, я также хочу регистрировать неудачные проверки. Я действительно не хочу регистрироваться в файле или где-то еще, кроме базы данных, потому что мне нужны отношения записей журнала с другими моделями и возможность выполнять запросы.
Какие у меня варианты?