ruby-on-rails - 查询按关联表列排序的结果,仅限最近的关联

标签 ruby-on-rails sorting mysql

给定以下架构

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/

相关文章:

ruby-on-rails - 使用 gsub 将特定字符替换为换行符(Ruby、Rails 控制台)

ruby-on-rails - 使用 brew 在 osx mavericks 上安装 rvm 时出错

php - 如何从 codeigniter 中的 varchar 字段获取整数值的 max() ?

mysql - 如何在mysql中找到第二高的薪水

java - 测试预期异常时出错,即使它抛出正确的异常

ruby-on-rails - 当设置默认值 : Disabled on a form, 时,一些 bool 选项被禁用?

ruby-on-rails - Ruby 的 'open_uri' 是否在读取或失败后可靠地关闭套接字?

perl - 文件中最常用的字符串

php - 使用php对特定值的数组进行排序

javascript - 如何修改虚线单元格名称的排序代码?