Предположим, что у меня есть простые модели First
и Second
, и существует некоторая связь от Second
с использованием belongs_to :first
. Теперь я хочу что-то сделать с Second
, когда сохраняется First
. Но я не хочу настраивать обратный вызов after_save
в First
, чтобы иметь дело с Second
.Настройка обратного вызова ActiveRecord из разных моделей
Я хочу, чтобы мои модели были чистыми и не подозревали друг друга как можно больше. Я всегда придерживаюсь лучших практик в инкапсуляции объектов, и это делает мою жизнь проще, всегда.
Поэтому, естественно, так как after_save
является методом класса, я пытался настроить эту функцию обратного вызова в Second
, как это:
class Second < ActiveRecord::Base
belongs_to :first
First.after_save do |record|
if that = Second.find_by_first_id(record.id)
# grow magic mushrooms here...
end
end
end
, но это не работает, то обратный вызов никогда не выполняются, и никакой ошибки нет поднял.
Действительно, наблюдатель решение моей проблемы, я не знал об их существовании, спасибо. – skrat