带有Rails ActiveRecord的SQL UNION

Jac*_*oge 5 sql activerecord ruby-on-rails

我的应用程序中有两个模型,注释和亮点.它们的定义如下:

class Note < ActiveRecord::Base
  belongs_to :user
end

class Highlight < ActiveRecord::Base
  has_and_belongs_to_many :users
end
Run Code Online (Sandbox Code Playgroud)

现在,我想在同一个流中访问它们,按创建日期排序.我无法解决如何在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
Run Code Online (Sandbox Code Playgroud)

添加当然,它的工作原理,但感觉不太Rails-y.另外,我不知道如何判断哪些项目是注释,哪些项目是重点.另一种选择是分别获取音符流和高亮显示流,然后合并数组.这看起来也很笨拙,我觉得在某些地方必须有一个抽象的东西,我正在尝试做什么.

我在这里缺少一些关键的ActiveRecord功能吗?什么是最有效的方法?