Скажем, у меня есть три модели, которые выглядят (в основном) так:
class User < ActiveRecord::Base
has_many :projects
has_many :deliverables
end
class Project < ActiveRecord::Base
belongs_to :user
has_many :deliverables
end
class Deliverable < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
Теперь, скажем, я хочу, чтобы произошло следующее: когда project
переносится из одной user
в другуювсе связанные deliverables
будут переданы вместе с ним.Так что-то вроде:
project = Project.find(some_criteria)
deliverables = project.deliverables
project.user_id = new_user_id
deliverables.each do |d|
d.user_id = new_user_id
end
Есть ли способ автоматизировать то, что я только что описал?Конечно, я всегда мог бы просто поместить это в метод (например, transfer_user
), но я бы предпочел, чтобы это происходило автоматически всякий раз, когда user_id
устанавливается в новое значение.