0

ActiverecordとMySQLを使用するRails3アプリにモデルがLog関連付けられているモデルがあります。UserALogには、と呼ばれる文字列との2つの属性がありlabelますtimestamp。文字列「create」を含むすべてのものを検索Logしたいのですが、クエリがユーザーごとに1つのレコードのみを返すようにし、さらに、属性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
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 に答える