0

最新の「記事」をループしようとしています。たとえば、過去 30 日間に最近投稿された 10 個の記事です。

次のような記事モデルでメソッドを作成する必要があります。

models/articles.rb

def recent
  self.where('created_at > ?', Time.now-30.days.ago)
end

そして、私の見解でそれを呼び出しますか?

ビュー

@articles.each do |article|
   link_to article.title, Article.recent    
end

もちろん、これは機能しません。

これが回答されている場合 (おそらく間違った検索用語を使用していた - stackoverflow の初心者)、指示をいただければ幸いです!

4

3 に答える 3

2

Scopesこのようなものをチェックするのは良いことです。それらの詳細については、こちらのリンクを参照してください。

モデルでは、次のようなArticleスコープを作成できます。recent

Class Article < ActiveRecord::Base
  scope :recent, lambda { where("created_at < ?", TimeZone.now) }
end

次に、これらの記事を単に使用して取得しますArticle.recent

于 2012-12-03T14:19:27.423 に答える
2

これはメソッドであるべきだと思いますが、クラスメソッドです。私は個人的に、この種のスコープよりもメソッドを好みます。

def self.recent
  where('created_at > ?', Time.now-30.days.ago).order("created_at desc").first(10)
end

@recent_articlesコントローラーでは、次のように設定できます

@recent_articles = Article.recent

あなたがするビュー

@recent_articles.each do |article|
  link_to article.title, article_path(article) # use your proper route method here.
end

推奨される (日付付き) 読書: http://www.railway.at/2010/03/09/named-scopes-are-dead/

于 2012-12-03T14:27:59.393 に答える
0

スコープはそこでうまくいくと思います:

http://guides.rubyonrails.org/active_record_querying.html#scopes

€遅い;)

于 2012-12-03T14:20:57.680 に答える