如何避免在序列化程序中多次查询?

时间:2016-06-15 11:43:00

标签: ruby-on-rails ruby active-model-serializers

我的模型story.rb包含字段product_ids。这是一个Array个ID。 在story_controller show操作中,我必须使用storyproducts返回stores。我通过story_serializer返回回复。像这样

注意:storystore无关联

class StorySerializer < ActiveModel::Serializer
  ----
  ----
 def products
    here my query for products using `product_ids`
 end

 def stores
    here is the problem
    to find stores, I have to find product's first and then find store's of that product. so again I am querying for products here.
 end

end

我有product_ids因此我可以轻松返回story的所有相关产品,但问题是返回相关的stores。如何在不查询产品的情况下退回商店。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用 memoization

def products
  @products ||= begin
    some code 
    more code
   end
end

或者它只是一小段代码

def products
  @products ||= some code
end