0

我正在创建自己的简单博客应用程序,我想在侧边栏包含一个“最新帖子”部分,所以我的帖子模型需要整个应用程序都可以访问。我正在寻找这样做的最佳方式。

我正在考虑应用程序控制器中的 before_filter 跟随一个私有方法来调用我拥有的范围:

class ApplicationController < ActionController::Base
  before_filter :latest_news

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

这是最好的方法吗?

4

1 回答 1

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宏为您所做的)调用,然后如果它在第一次调用时尚未加载,它将加载它,并且任何后续调用都将被缓存。这是获取当前用户记录等内容的非常常见的模式。

于 2013-09-23T01:34:23.530 回答