您好我有一个rails应用程序,它在每个页面上始终显示公司名称。 由于登录用户可以拥有她所属的多家公司。 用户和公司存储在数据库中。 我使用authlogic进行用户管理。
现在我不希望在每次回发或页面更改时都访问数据库 在登录用户发生变化或用户选择其他公司之前,选择/存储公司的最佳做法是什么?类似于给定用户的全局实例变量。
我在我的application_controller
中开始使用它def current_company
return @current_company if defined?(@current_company)
@current_company = Account.includes(:users).where(:users =>current_company)
end
我意识到我还在击中数据库...
会话是推荐的方式还是最佳实践...
感谢您的帮助
答案 0 :(得分:2)
|| =方式:
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
此方法与使用|| =
的正常记忆之间存在差异http://apidock.com/rails/ActiveSupport/memoize#447-Differences-between-normal-or-assign-operator
@tadman,你说得对,但从我的观点来看,取决于你试图“缓存”的方法有多复杂。对于简单的情况,我更喜欢|| =
答案 1 :(得分:0)
我认为这就是你要找的东西 https://github.com/nkallen/cache-money