我想在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) }
问题是:每次调用方法时都会加载问题... 显然这很慢。有没有方法不重新加载查询?
答案 0 :(得分:1)
你可以记住结果:
def self.do_something
@do_something ||= begin
all.each do |question|
#do stuff
end
end
end
然后,查询(和计算)将仅在您第一次调用方法时执行。下一次,它将返回@do_something