给定以下架构
class User
has_many :page_views
#[id]
end
class Page
has_many :page_views
#[id]
end
class PageView
belongs_to :user
belongs_to :page
#[id, created_at, updated_at]
end
我如何查询给定页面,所有用户最近的页面 View (按创建日期排序)。每个用户一行,仅显示他们最近的 View 。
最佳答案
您希望特定 page_id 的每个 user_id 的 PageViews 具有最大的created_at。这是此查询在 SQL 中的表示:
SELECT max(created_at) AS last_visit, page_views.*
FROM page_views
WHERE (page_id = 1)
GROUP BY user_id
ORDER BY last_visit DESC
在 Rails 3 中,你可以这样写:
Page.first.page_views.group(:user_id).select('max(created_at) AS last_visit, page_views.*').order('last_visit DESC')
关于ruby-on-rails - 查询按关联表列排序的结果,仅限最近的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901558/