Rails迭代模型的类方法中的集合而不重新加载查询?

问题描述 投票:0回答:1

我想在Model的类方法中迭代一个集合。不幸的是,唯一的方法似乎是使用所有:

def self.do_something
  all.each do |question|
    #do stuff
  end
end

questions = Question.pick_random.load
User.all.each { |user| questions.do_something_for(user) }

问题是:每次调用方法时都会加载问题......很明显,这很慢。有没有方法不重新加载查询?

ruby-on-rails rails-activerecord class-method
1个回答
1
投票

你可以记住结果:

def self.do_something
  @do_something ||= begin
    all.each do |question|
      #do stuff
    end
  end
end

然后,查询(和计算)将仅在您第一次调用方法时执行。下一次,它将返回@do_something

© www.soinside.com 2019 - 2024. All rights reserved.