rails 接触链与 has_many :through associations

rails touch chain with has_many :through associations

使用连接模型,在此示例设置中使用 has_many :through

class Collage
 has_many :arrangements
 has_many :photos, through: :arrangements

class Photo
 has_many :arragements
 has_many :collages, through: :arragements
end

class Arragement
belongs_to :photo
belongs_to _collage
end

照片可能会改变尺寸,这会导致拼贴画发生变化

使用 touch: true 不能这样工作,因为链不是 "one way up",因为 arragement 指向 PhotoCollage

我怎样才能使照片更改(即触摸)也能触摸到它的拼贴画?

你可以手动触摸它们。

class Photo
  has_many :arragements
  has_many :collages, through: :arragements

  after_save do
    collages.update_all updated_at: Time.now
  end
end

这是一个更短的版本:

class Photo
  has_many :arragements
  has_many :collages, through: :arragements

  after_save { collages.find_each(&:touch) }
end