У меня есть приложение Rails, которое часто использует обратные вызовы... так что у меня довольно много функций, вызываемых :после _create и :после _фиксации в нескольких моделях.
Я задаюсь вопросом, является ли способ, которым я делаю это прямо сейчас, лучшим.
В основном у меня есть следующий сценарий:
Class Parent < ActiveRecord::Base
has_many :children
after_create :first_function
after_commit :last_function
def first_function
if !self.processed?
self.children.create(:name => "Richard The Lion Heart")
self.processed = true
self.save!
end
end
def last_function
if self.processed?
if !self.processing?
self.process
self.save!
self.processing = true
self.save!
end
end
end
end
Таким образом, вы можете видеть, что все зависит от некоторых странных двойных логических проверок, потому что в противном случае вторая функция _вызывается каждый раз, когда модель обновляется, и она может быть обновлена самой функцией, поэтому функция вызывается повторно.
В целом это приводит меня к случаю, когда я должен ввести новую логическую проверку для каждого срабатывания обратного вызова. Это работает, но я не считаю это элегантным. Что мне не хватает?