首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为"grouped_options_for_select“准备散列

为"grouped_options_for_select“准备散列
EN

Stack Overflow用户
提问于 2015-12-01 17:26:03
回答 1查看 30关注 0票数 0

我正试图为我的视图中的选择做一个散列。

现在我有一件丑陋的东西。

代码语言:javascript
复制
@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

我想要这样的东西:

代码语言:javascript
复制
@platforms = {
  'Plateform America' => [['Fallout4',76896], ['Just',56774]],
  'Plateform Ed' => [[Fallout3',77445],['Fallout2',75674],['Mario',45677]]
}

我有两个问题。Game可以有许多GameUpdates。目前,列表显示了所有的game_updates。这就像有Fallout4.1Fallout4.2Fallout4.3和我只想要最后一个Games_update of Game

其他问题是重构第一段代码。我试着和group_by一起玩,但没有成功。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-01 19:09:55

解决这一问题的一种方法是在游戏表中保留一个外键last_game_update。这样,游戏可以有许多更新,但只有最后一次更新。

代码语言:javascript
复制
class Game < ActiveRecord::Base
  has_many :game_updates
  belongs_to :last_game_update, class_name: GameUpdate
end

然后,以确保游戏表保持对游戏更新表的最新引用为代价,您的查询变得更简单了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34026335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档