我正在创建自己的简单博客应用程序,我想在侧边栏上添加“最新帖子”部分,因此整个应用都需要访问我的帖子模型。我正在寻找最好的方法。
我在想应用程序控制器中的before_filter后跟一个私有方法来调用我的范围:
class ApplicationController < ActionController::Base
before_filter :latest_news
private
def latest_news
@latest = News.latest.limit(5)
end
end
这是最好的方法吗?
答案 0 :(得分:1)
我建议使用一种基本相同的延迟加载方法,而不是before_filter
。
class ApplicationController < ActionController::Base
helper_method :latest_news
def latest_news
@latest_news ||= News.latest.limit(5)
end
end
这样你可以从任何控制器或视图调用latest_news
(这是helper_method
宏为你做的事情)然后如果它第一次被调用时没有加载它就会加载它任何后续调用都将被缓存。这是获取当前用户记录等的常用模式。