PostgreSQL 9.1とRails 3.2.2を使用しています。特定のユーザーに対して、会場ごとに最後のシングルusers_checkins
のコレクションを返すにはどうすればよいですか?Rails 3 Distinct JoinとPostgresql
私は
User.find(1)
.users_checkins
.joins(:venues_checkins)
.merge(VenuesCheckin.select('DISTINCT(venues_checkins.venue_id)'))
を試してみましたが、それはUsersCheckin
の属性のいずれかを取得しません。私のモデルは以下の通りです。
class Venue
has_many :venues_checkins
has_many :users_checkins, through: :venues_checkins
end
class UsersCheckin
#start:datetime
#finish:datetime
belongs_to :user
belongs_to :venues_checkin
end
class VenuesCheckin
belongs_to :venue
has_many :users_checkins
end
class User
has_many :users_checkins
has_many :venues_checkins, through: :users_checkins
has_many :venues, through: :users_checkins
end
更新
ユーザーが会場Aと会場Bのための3のための3つのusers_checkinsレコードを持っている場合は、私のコレクションは、1つのレコードが会場Aから最後に作成users_checkinと他のものとの2つのレコードを返す必要があります場所Bから最後に作成されたusers_checkinであるレコードを、その2つのレコードのうち最後に作成されたコレクション内の最初のレコードによって順序付けられたコレクションで記録する。そして、ユーザーから始めるのは、特定のユーザーのusers_checkinsだけです。
最終結果をUsersCheckinのコレクションにしたい場合は、これを開始点にする必要がありますか? 「会場の最後の一人のユーザー_チェック」とは何を意味するのかを明確にすることはできますか? –
ユーザが 'Venue A'のための3つの' users_checkins'レコードと 'Venue B'のための3つのレコードを持っていると、私のコレクションは2つのレコードを返すべきです、' Venue A'から最後に作成された 'users_checkin'これらの2つのレコードのうち最後に作成されたものであるコレクション内の最初のレコードによって順序付けられたコレクションと共に、「Venue B」から最後に 'users_checkin'を作成しました。そして私はユーザから始めます。なぜなら、私は指定されたユーザに対して 'users_checkins'だけを必要としているからです。 – Joey