如何在请求后丢弃类属性

时间:2016-02-15 18:54:55

标签: ruby-on-rails ruby

问题在于:

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一次?

2 个答案:

答案 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