根据has_many关系获取ActiveRecord结果

时间:2017-06-19 17:09:06

标签: ruby-on-rails ruby activerecord

我有一个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。

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用joins?像这样:

Toy.joins(:toy_parts).where("toy_parts.content like (?) AND toy_parts.type_desc='arm'", "%Left arm from%"")