我认为这可以简单地完成,但我无法这样做。
我目前的代码是:
@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
查询,我没有加载它。是因为懒惰的评估,有没有办法在开始时加载所有内容并将其作为哈希中的索引进行访问?
答案 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])