Ruby on rails 如何在rails中正确缓存变量

Ruby on rails 如何在rails中正确缓存变量,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,嗨,我有一个rails应用程序,它在每个页面上始终显示公司名称。 因为一个登录的用户可以有多个她所属的公司。 用户和公司存储在数据库中。 我使用authlogic进行用户管理 现在,我不想在每次回发或页面更改时访问数据库 在登录用户更改或用户选择其他公司之前,最好的做法是更改/存储公司?类似于给定用户的全局实例变量 我从我的应用程序控制器开始 def current_company return @current_company if defined?(@current_company)

嗨,我有一个rails应用程序,它在每个页面上始终显示公司名称。 因为一个登录的用户可以有多个她所属的公司。 用户和公司存储在数据库中。 我使用authlogic进行用户管理

现在,我不想在每次回发或页面更改时访问数据库 在登录用户更改或用户选择其他公司之前,最好的做法是更改/存储公司?类似于给定用户的全局实例变量

我从我的应用程序控制器开始

def current_company
  return @current_company if defined?(@current_company)
  @current_company = Account.includes(:users).where(:users =>current_company)
end
我意识到我还在打db

会议是推荐的方式还是最佳实践方式


提前谢谢你的帮助

我想这就是你要找的
方法:

def current_company
  @current_company ||= Account.includes(:users).where(:users =>current_company)
end
def current_company
  Account.includes(:users).where(:users =>current_company)
end
memoize :current_company
记忆方式:

def current_company
  @current_company ||= Account.includes(:users).where(:users =>current_company)
end
def current_company
  Account.includes(:users).where(:users =>current_company)
end
memoize :current_company
此方法与| |=


@塔德曼,你是对的,但从我的观点来看,这取决于你试图“缓存”的方法有多复杂。对于简单的情况,我更喜欢| |=

对于普通Ruby来说,
| |=
方法非常好,但是在Rails中,您可能希望使用该方法,因为它更灵活。这只适用于每个页面请求?或者我错了。当我点击刷新时,我点击了数据库。。。我想在应用程序控制器中定义它,因为它显示在每个页面上。我错了吗path@tadman:undeprecated link=>连接到控制器实例的任何内容将仅用于一个请求。任何附加到类的内容都将在进程的生命周期内保持不变。但是请注意,这些数据不是在Rails实例之间共享的,在任何活动站点上通常都有几个实例。看起来不错,但不支持Rails 3,我的目标是Rails 3。。。您是否将其用于rails 3?