在整个应用程序中访问模型的最佳实践

时间:2013-09-23 01:29:26

标签: ruby-on-rails activerecord

我正在创建自己的简单博客应用程序,我想在侧边栏上添加“最新帖子”部分,因此整个应用都需要访问我的帖子模型。我正在寻找最好的方法。

我在想应用程序控制器中的before_filter后跟一个私有方法来调用我的范围:

class ApplicationController < ActionController::Base
  before_filter :latest_news

  private
  def latest_news
    @latest = News.latest.limit(5)
  end
end

这是最好的方法吗?

1 个答案:

答案 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宏为你做的事情)然后如果它第一次被调用时没有加载它就会加载它任何后续调用都将被缓存。这是获取当前用户记录等的常用模式。