1
我有三种模式用户,游戏和点,其中用户获得积分玩游戏。我想要做的是在视图中显示用户最热门的游戏点数。识别导轨查询结果
我用这个question来确定最流行的游戏。所以,我现在有这个范围,Game.rb:
scope :most_popular_games,
select("games.id, name, count(points.id) AS points_count").
joins(:points).
group("games.id").
order("points_count DESC").
limit(5)
在我的控制,我有这样的:
@most_popular_games = Game.most_popular_games
我的模型:
模型
class Point < ActiveRecord::Base
belongs_to :game
belongs_to :user
end
class Game< ActiveRecord::Base
has_many :points
end
class User < ActiveRecord::Base
# no relationship for points or games
end
class GameRank < ActiveRecord::Base
belongs_to :game
belongs_to :user
end
然而,我无法弄清楚该做什么是创建一种方法,现在为每个用户分配这些游戏中的每个用户的积分,并使其成为我识别每个用户我有所不同,所以我将它们分解在视图上(即分别显示每场比赛的结果)。
我试图在代码中添加这一点,但我不知道的,使每场比赛的结果在视图中可识别的最佳方式:
@most_popular_games.each do |most_popular_game|
most_points_for_popular_game = GameRank.where("game_id =?", most_popular_game.id).order('total_points desc').limit(10)
end
我的问题是基本上我怎么重新使用“most_points_for_popular_game”的结果 - 这是针对给定游戏得分最高的用户 - 对于五场比赛(@most_popular_games =五次结果)中的每一场?
也许尝试给模型关系看,所以它可以在不SQL来完成。关系是什么?一个用户一次玩一个游戏,或者两个用户可以玩一个游戏,或者一个用户只能玩一次游戏? – Zippie 2013-03-12 23:37:36
我已经添加了模型。谢谢 – yellowreign 2013-03-12 23:48:29
用户只能玩一次游戏吗? – Zippie 2013-03-12 23:52:30