在 ruby 中使用包含子句时按顺序加载

load with order when using includes clause in ruby

我需要做以下事情:

我有一长串 ID(称为 user_ids)。

我想将所有用户拉到 :id => user_ids,并包括照片模型。但是,我希望照片模型按 created_at 排序(因为我需要知道用户发布到我们网站的第一张照片的日期)。

基本上,我想做的是:

User.includes(:photos).order(:created_at).where(:id => user_ids).each do |user|
  user.photos.first
  ...

获取用户发布的第一张照片。现在,order 子句指的是 User 模型而不是 Photo 模型。

我不确定在使用 includes 子句时如何排序。我也不知道有没有更好的办法解决这个问题!

有什么想法吗?最坏的情况,如果我需要使用普通的 postgres,我也很乐意这样做——但也不知道如何处理,我所有的想法都非常低效。

在订单子句中使用table_name.column_name指定要订购的table:

User.includes(:photos).order('photos.created_at').where(:id => user_ids)