On
has_many relations, there is a simple way to update all associated objects - just add
touch: true and the
updated_at field on all associated objects will get updated. This is a major issue with Russian Doll caching, because this is was expires the cache and makes sure the page shows the most recent changes.
However
has_and_belongs_to_many (HABTM) does not have a
:touch option. It must be done manually. So, here's a quick and easy way to do this:
class Category
before_save :touch_videos
def touch_videos
videos.touch
end
end
class Video
def self.touch
update_all(updated_at: Time.now)
# or, if you need validations to run for some reason
find_each { |video| video.touch }
end
end
No comments:
Post a Comment