2012-03-05 34 views
1

使用Postgresql 9.1和Rails 3.2.2。对于给定的用户,我将如何返回每个场地最后一个单独的users_checkins的集合?Rails 3独特加入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 

更新

如果用户对场地和场馆b 3个分配users_checkins记录3,我的收藏应该返回2条记录与一个记录是最后一个从地点A和其他创建users_checkin记录是来自Venue B的最后创建的users_checkin,集合中第一条记录的顺序是最后创建2条记录中的哪条记录。我从用户开始,因为我只想给给定用户的users_checkins。

+0

如果你想最终的结果是一个UsersCheckin的集合那么这应该是你的出发点?你能否澄清你的意思是“每个场地的最后单个users_checkins”? – 2012-03-05 20:54:12

+0

如果一个用户有3个'Venue A'的'users_checkins'记录和3个'Venue B',我的集合应该返回2条记录,其中一条记录是最后从'Venue A'创建的'users_checkin',另一条记录是最后从'Venue B'创建'users_checkin',集合中第一条记录的顺序是最后创建的那两条记录中的哪一条。我从用户开始,因为我只想为给定用户使用'users_checkins'。 – Joey 2012-03-05 21:18:02

回答

1

如果您可以编写SQL并使其在psql提示符下运行,请将其设置为User类中的自定义方法,并跳过尝试将自定义查询插入ORM。

此外,它听起来像你想在你的查询min/max限定符,而不是独特的。