我在使用Activerecord和MySQL的Rails 3应用程序中有一个Log
模型和一个关联的User
模型。 Log
有两个属性:名为label
的字符串和timestamp
。我想找到包含字符串“create”的Log
的每个label
,但我只希望查询为每个用户返回一条记录,而且我希望第一条记录符合这些条件timestamp
属性。让我知道这是否太混乱,我会试着更清楚。
执行此操作的缓慢方法可能是......
logs=[]
User.all.each do |u|
logs << Log.where("label like ? and user_id = ?","%create%", u.id).order('timestamp').limit(1)[0]
end
答案 0 :(得分:0)
未经测试,但这是一般的想法:
Log.select("DISTINCT user_id, *").where("label like ?","%create%", u.id).order('timestamp').group("user_id").includes(:user)