我有一個稍微複雜的查詢,我想作爲一個自然的ActiveRecord關係。目前我打電話@ calendar.events和@ calendar.shared_events,然後加入數組並對它們進行排序。整合是可以完成這個SQL:你會如何在ActiveRecord關係中表示這個sql查詢?
SELECT calendar_events.* FROM calendar_events left outer join calendar_events_calendars on calendar_events_calendars.calendar_event_id = calendar_events.id where calendar_events.calendar_id = 2 or calendar_events_calendars.calendar_id = 2
但我不知道如何表示這是一個ActiveRecord關係。我知道我可以使用自定義的SQL查找器,但我希望能夠在結果上使用範圍。
目前事件屬於一個日曆,也通過的habtm屬於許多其他日曆連接表:
has_and_belongs_to_many :shared_events, :class_name => 'CalendarEvent', :order => 'beginning DESC, name'
has_many :events, :class_name => 'CalendarEvent', :dependent => :destroy, :order => 'beginning DESC, name'
任何指針將不勝感激:)
這是一個很好的問題。每個事件只屬於一個日曆,但可以鏈接到其他日曆。我想我可以做一個has_many:通過並在連接表上設置某種布爾列來表明事件是否屬於這個日曆,但這看起來太過微妙。比事件絕對屬於一個日曆更好,如果有必要,也可以鏈接到其他事件。我明白爲什麼activerecord不允許這樣的關係,因爲它會增加新事件的問題。 – 2009-07-13 06:28:48