【问题标题】:SQL UNION with Rails ActiveRecord使用 Rails ActiveRecord 的 SQL UNION
【发布时间】:2011-01-21 06:21:48
【问题描述】:

我的应用中有两个模型,笔记和亮点。它们的定义如下:

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 功能吗?最有效的方法是什么?

【问题讨论】:

    标签: sql ruby-on-rails activerecord


    【解决方案1】:

    【讨论】:

    • 我完全忘记了 STI。你是对的,它看起来正是我需要的。谢谢!
    猜你喜欢
    • 2021-03-20
    • 2011-09-29
    • 1970-01-01
    • 2019-02-15
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2015-09-04
    相关资源
    最近更新 更多