在ruby中使用include子句时加载顺序

时间:2015-03-12 00:16:29

标签: ruby-on-rails activerecord postgresql-9.3

我需要做以下事情:

我有一个巨大的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模型。

我不确定在使用include子句时如何订购。我也不知道是否有更好的方法来解决这个问题!

任何想法?最糟糕的情况是,如果我需要使用普通的postgres,我也很乐意这样做 - 但是没有关于如何处理这个问题的想法,我的所有想法都非常低效。

1 个答案:

答案 0 :(得分:0)

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

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