问题在于:
class Man
def self.the_man
@the_man ||= find_by(id: 1)
end
end
在控制器和视图中都请求 the_man
,我直接在视图中访问Man.the_man
,而不是在控制器中实例化它。它在请求中保留相同的记录。
我试图将其替换为:
Thread.current[:the_man] ||= find_by(id: 1)
但结果是一样的。
如何在每次请求时仅Man
触发find_by
一次?
答案 0 :(得分:0)
您可以尝试使用RequestContext
解决方案,建议作为this问题的答案:
class RequestContext
# ...
# see answer in link for implementation and scope...
# ...
def the_man
@the_man ||= Man.find_by(id: 1)
end
end
答案 1 :(得分:0)
与@Uri Agassi所说的相似,但包裹在一颗宝石中:https://github.com/steveklabnik/request_store