2011-01-21 89 views
5

我在我的應用程序中有兩個模型,註釋和亮點。它們被定義爲:SQL UNION與Rails ActiveRecord

class Note < ActiveRecord::Base 
    belongs_to :user 
end 

class Highlight < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

現在,我希望在創建日期排序的同一個流中都可以訪問它們。我不能換我圍​​繞如何做到這一點的ActiveRecord的頭,讓我放在一起此查詢:

SELECT book_id, page, content, created_at FROM `highlights` 
INNER JOIN `highlights_users` ON `highlights`.id = `highlights_users`.highlight_id 
WHERE (`highlights_users`.user_id = 1) 
UNION SELECT book_id, page, content, created_at FROM notes 
ORDER BY created_at DESC 

添加,當然,它的工作原理,但並不覺得很Rails的-Y。另外,我不知道如何分辨哪些項目是筆記,哪些是重點。另一種選擇是單獨獲取音符流和高亮流,然後合併這些數組。這看起來也很笨拙,我覺得我必須在某個地方抽象出我正在嘗試做的事情。

是否有一些關鍵的ActiveRecord功能我在這裏失蹤?什麼是最有效的方式去做這件事?

回答