【发布时间】:2018-03-23 07:49:09
【问题描述】:
我有一些很少更改的表。不幸的是,我需要在控制器中经常调用这些表,这会增加某些页面的加载时间。例如,在一个控制器中,我有:
class PagesController < ApplicationController
def index
@groups = Group.all
@events = Event.all
end
end
然后我突然想到,由于组和事件很少改变,我可以将这些变量加载到初始化程序中或作为模型中的常量,这样它们现在实际上不需要查询数据库。我将上面的内容更改为以下内容:
class Group < ApplicationRecord
ALL = Group.all
end
class Event < ApplicationRecord
ALL = Event.all
end
class PagesController
def index
@groups = Group::ALL
@events = Event::ALL
end
end
上述解决方案实际上在开发中有效。然而,在 Heroku 的生产环境中,它会将变量加载到控制器中。我还尝试设置一个初始化程序并定义::Groups = Group.all,但这仍然会在控制器中调用时加载数据。有什么方法可以在初始化期间以适用于 Heroku 的方式加载数据库信息?
【问题讨论】:
标签: ruby-on-rails ruby heroku activerecord ruby-on-rails-5