0

サイトの年次アーカイブを作成していますが、動作していますが、group_by を使用しています。この特定のサイトには最終的に何千もの投稿が含まれることになり、グループ化をデータベースに移動したいのですが、それをアクティブなレコード クエリに変換する方法がよくわかりません。

私はアクティブなレコードとレール 4 を使用しています。

コントローラーで:

@posts_by_year = @posts.group_by { |post| post.published_at.year }

ビューで:

  <% @posts_by_year.each do |year, post| %>
    <li><%= "#{year} - #{pluralize post.count, 'post'}" %></li>
  <% end %> 

次のようなリストを生成します。

2013 (5 posts)
2012 (2 posts)
2010 (1 post)

どうすればこの正確な機能を複製できますが、代わりに DB にグループ化を行わせることができます。年間 2,000 ~ 3,000 件の投稿があると予想される場合、切り替えを行う価値があると思いますか? 最後に、mysql または postgres を使用する場合、アクティブ レコードの実装は異なりますか?

4

2 に答える 2

1

コントローラー内(mysqlを使用しているタグから推測)

@posts_by_year = @posts.select("YEAR(published_at) AS year, COUNT(id) AS counter").group("YEAR(published_at)")

ビューで

<% @posts_by_year.each do |post| %>
  <li><%= "#{post.year} - #{pluralize post.counter, 'post'}" %></li>
<% end %>
于 2013-09-22T15:26:11.253 に答える