我有一个Toy和ToyPart ActiveRecord课程。玩具has_may ToyPart关系。 ToyPart ActiveRecord有一个描述ToyPart的内容字段和一个type_desc字段,其中简要描述了ToyPart。
我需要根据ToyPart的内容和type_desc字段获取所有玩具记录。我做了这个陈述以得到结果:
Toy.all.to_a.toy_parts do {|toy_part| toy_part.where("content like (?) and type_desc='arm'", "%Left arm from%" }
此查询需要太多时间才能返回结果。玩具表有超过270000条记录,每个玩具至少有5个ToyPart结果。
我是Ruby和Rails的新手。将所有记录转换为数组我相信它是一个巨大的进程,并且在循环中进行另一个查询,成本会进一步增加。
to_a不是个好主意。为了减轻处理我可以做些什么来改善它?
P.S:我使用的是rails 4.2.6。
答案 0 :(得分:3)
您是否尝试过使用joins
?像这样:
Toy.joins(:toy_parts).where("toy_parts.content like (?) AND toy_parts.type_desc='arm'", "%Left arm from%"")