通过主键访问哈希 - 红宝石轨道

时间:2014-11-21 22:16:21

标签: ruby-on-rails ruby-on-rails-3

我认为这可以简单地完成,但我无法这样做。

我目前的代码是:

@player_types = squad.player_types 

现在我循环并查找id,

params[:player_types].each do |p_type|
  @player_types.find(p_type[:id])
end

为什么@player_types.find(p_type[:id])在查找服务器日志时必须执行select查询,我没有加载它。是因为懒惰的评估,有没有办法在开始时加载所有内容并将其作为哈希中的索引进行访问?

2 个答案:

答案 0 :(得分:0)

使用arel gem以及选择具有特定 ID 的所有记录的更好方法是:

ids = params[:player_types].map {|v| v[:id] }
@player_types.where(@player_types.class.arel_table[:id].in(ids))

答案 1 :(得分:0)

如果player_types是一个表格,您可以通过将数组传递到params[:player_types]条件直接选择where数组中的所有player_types。

@player_types = PlayerType.where(id: params[:player_types])