0

我在使用 Activerecord 和 MySQL 的 Rails 3 应用程序中有一个Log带有关联模型的模型。UserALog有两个属性:一个名为的字符串label和一个timestamp. 我想找到每个Log包含label字符串“create”的内容,但我只希望查询为每个用户返回一条记录,此外,我希望第一条记录与timestamp属性匹配这些条件。让我知道这是否太令人困惑,我会尝试更清楚。

一个缓慢的方法可能是......

logs=[]
User.all.each do |u|
  logs << Log.where("label like ? and user_id = ?","%create%", u.id).order('timestamp').limit(1)[0]
end
4

1 回答 1

0

未经测试,但这是一般的想法:

Log.select("DISTINCT user_id, *").where("label like ?","%create%", u.id).order('timestamp').group("user_id").includes(:user)

于 2013-01-09T20:00:10.193 回答