我在我的應用程序中有兩個模型,註釋和亮點。它們被定義爲: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功能我在這裏失蹤?什麼是最有效的方式去做這件事?
我忘記了所有關於STI。你是對的,它看起來正是我所需要的。謝謝! – 2011-01-21 07:53:38