49

簡単なクエリが必要です: 2013 年 1 月 1 日以降に注文したユーザーのリストを検索します。

SQL では、これは非常に単純なクエリです。

しかし、Rails と Active Record を使用しています。

だから私は書いた:User.joins(:orders).where("orders.created_at >= '2013-01-01 00:00:00'")

私たちのデータベースには、2013 年 1 月 1 日以降、75 人のユーザーから 100 件の注文がありました。(一部のユーザーは複数の注文を行ったようです。)

ただし、上記の式は 100 人のユーザーを返します。(重複する必要があります。)

私は試したUser.joins(:orders).where("orders.created_at >= '2013-01-01 00:00:00'").uniq

それもうまくいきません。

2013 年 1 月 1 日以降に注文した 75 人のユーザーを取得するにはどうすればよいですか?

4

4 に答える 4

16
User.joins(:orders).
    where("orders.created_at >= '2013-01-01 00:00:00'").
    group('users.id')

groupメソッドはクエリに連鎖し、一意のレコードのリストを提供します。

于 2014-08-07T20:59:05.150 に答える