我试图在我的视图中为选择准备哈希值。
目前我有这个丑陋的事情。
@platforms = {}
Platform.all.each do |platform|
@platforms[platform.name] = platform.game_updates
.includes(:game)
.where(game: {store_id: current_store.id})
.map {|game_update| [game_update.name, game_update.game.id] }
end
我希望有这样的东西:
@platforms = {
'Plateform America' => [['Fallout4',76896], ['Just',56774]],
'Plateform Ed' => [[Fallout3',77445],['Fallout2',75674],['Mario',45677]]
}
我有两个问题。 Game
可以有多个GameUpdates
。目前列表显示所有game_updates。它就像拥有Fallout4.1
,Fallout4.2
,Fallout4.3
而我只想要Games_update
的最后一个Game
。
其他问题是重构第一个代码。我尝试使用group_by
但没有成功。
由于
答案 0 :(得分:1)
解决此问题的一种方法是在游戏桌中保留外键last_game_update。通过这种方式,游戏可以有许多更新但只有一次最后更新
class Game < ActiveRecord::Base
has_many :game_updates
belongs_to :last_game_update, class_name: GameUpdate
end
然后以确保游戏桌保持对游戏更新表的最新参考的小价格,您的查询变得更加简化