我有以下结构:
User
型号:id,..
Event
型号:id,..
UserMapEvent
型号:user_id,event_id
例如,UserMapEvent
表可能包含以下记录:
User_id | Event_id
1 | 1
1 | 2
3 | 1
4 | 1
当用户喜欢某个活动时,我会使用此结构进行保存。
现在,如果我在节目控制器中并且我知道该事件的ID,我可以获得用户喜欢该事件的次数,如:
`likes = UsersMapEvent.where("event_id = ?", event.id).count`
例如,如何获得前3个喜欢的活动?我必须加入2桌吗?
我能想到的唯一解决方案是使用Event.all
,并且每个人都做同样的事情,但这听起来很愚蠢,我认为这不是其中一种情况'如果它&# 39;愚蠢而且工作得很好'。
我必须使用哪种类型的数据库操作来获取查询?
答案 0 :(得分:0)
您可以使用下一个代码选择前3个喜欢的事件:
Event.left_joins(:users_map_events).group(:id).order('COUNT(users_map_events.id) DESC').limit(3)