使用Postgresql 9.1和Rails 3.2.2。如何为给定用户返回每个场地的最后一个users_checkins
的集合?
我试过了
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
更新
如果用户的Venue A有3个users_checkins记录,Venue B有3个users_checkins记录,我的集合应该返回2条记录,其中一条记录是Venue A中最后创建的users_checkin,另一条记录是Venue B最后创建的users_checkin由集合中的第一个记录排序的集合,是最后创建的那两个记录中的哪一个。我从用户开始,因为我只想要给定用户的users_checkins。
答案 0 :(得分:1)
如果您可以编写SQL并使其在psql提示符下工作,请将其设置为User类中的自定义方法,并跳过尝试将自定义查询楔入ORM。
此外,听起来您需要查询中的最小/最大限定符,而不是不同。