我認爲你在尋找:touch
參數activerecord
關係。你可以試試這個:
Class Room
# touch is true will update meeting whenever the room is updated
has_many :meetings, touch: true
end
Class Invite
# touch is true will update the meetings whenever the invite is updated
has_many :meetings, touch: true
end
你可以閱讀here瞭解更多細節。請記住搜索:touch
。
更新: 如果您不想在更新相關記錄時更新會議。您可以手動查詢所有邀請,會議室和會議並從中收集會議記錄。類似這樣的:
new_invites = Invite.includes(:meetings).where("updated_at >= ?", Time.zone.now - 48.hours)
new_rooms = Room.includes(:meetings).where("updated_at >= ?", Time.zone.now - 48.hours)
new_meetings = Meeting.where("updated_at >= ?", Time.zone.now - 48.hours)
collected_meetings = new_invites.map(&:meetings).flatten + new_rooms.map(&:meetings).flatten + new_meetings
result = collected_meetings.uniq { |m| m.id }
我不想在有空間或邀請更改時更新會議。我想通過查詢獲取。 –
然後,我認爲您需要獲取所有會議室,邀請您在過去48小時內更新的會議,然後從中收集會議。我會爲此更新我的答案。 – vutran