说我有一个Candle
模型' today
'范围。范围运行一些繁重的条件,结果给我大约5k行。
today_candles = Candle.today
我想稍后使用列值过滤此集合。例如:
aaa_candles = today_candles.where(type: 'AAA')
bbb_candles = today_candles.where(type: 'BBB')
...
但此过滤器的每个过滤器都按如下方式生成新的数据库请求:
Candle.today.where(type: 'AAA')
Candle.today.where(type: 'BBB')
...
有没有办法过滤初始集合today_candles
数据而不会产生新的多个数据库请求?感觉就像一个基本的功能,但我找不到它。
我目前正在将集合存储为数组,然后循环遍历它们以过滤并避免多个数据库调用。但这感觉很愚蠢。
请注意:我不确定Rails是否会在生产环境中缓存AR集合并过滤它们而不使用新的db_queries。我目前正在使用webrick(开发)。
答案 0 :(得分:2)
如果您想稍后过滤 - 只需将关系视为数组。例如,使用select:
进行过滤today_candles.select { |x| x.type == 'AAA' }