joppot

コピペで絶対動く。説明を妥協しない

プログラミング

railsのmodelで各データが何個あるかカウントする

投稿日:


gount_top_thumb

概要

皆さんこんにちはcandleです。
今回は、railsでレコードのデータそれぞれ何個あるのか数える方法を紹介します。
mysqlだと簡単なのですが、railsだとよくわからなかったので、いろいろやったらできました。

例えば、下の画像のcategoryはそれぞれ、何個あるかを数えます。

sampledata

前提

適当なrailsプロジェクトがある


カウントする

私のItemモデルにはcategoryフィールドがあります。
私は管理しやすいinteger型で0 〜 3までの値をいれています。

showitemtables

これにrailsのenumを使って、制御しています。

okcate

それでは取得します。
コントローラーで一般に以下のように書きます。

モデル.group(:カウントしたいフィールド).count(:カウントしたいフィールド)

今回の場合ですと、モデルはItem、カウントしたいフィールドはcategoryになります。

Item.group(:category).count(:category)

例えば、以下のようなデータがあったとします。

sampledata

上のCategoryを見ると
ITは3つ
食べ物は2つ
仕事は1つ
趣味は2つあります。

先ほどのプログラムでこれが取得できれば良いわけです。

debugresult

これを実行してみると、以下のような結果が得られます。

display_each_values

数字なので、わかりづらいですが、0がIT、1が食べ物、2が仕事、3が趣味になっています。
得られたカウントはあっていますね。

おまけ

ちなみに、フィールドがinteger以外はどうなるか気になったので、categoryではなく、titleでやってみたところ、以下のようになりました。あいにく重複しているデータがなかったので、全部1ですが。
title_count

alltitlecount

まとめ

データベースへのアクセスは極力減らすがパフォーマンスの良い、アプリケーションになります。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Rails pluginを使ったgemの作り方[2](rails組み込み編)

概要 みなさんこんにちはcandleです。前回に引き続き、gemの作成をやっていきましょう。 今回はgemを作成したら、それをrailsプロジェクト上で読み込み、動作テストをするところをやります。 前 …

railsでsvgをviewに表示する

概要 みなさんこんにちはcandleです。 今回はrailsでsvgを出力します。 レスポンシブウェブデザインから始まり、最近ではwebでもsvgの使用が増えてきたような気がします。 手こずらずにsv …

wordpressのbogoプラグインのショートコードをカスタマイズする

English 日本語 概要 みなさんこんにちはcandleです。 今回はwordpress bogoのショートコードをカスタマイズしてみたいと思います。 紹介する項目は以下の2つです。 国旗の表示、 …

cakephp2.5.6をfabric+cuisineを使用してインストールする

概要 みなさんこんにちはcandleです。今回はcakephp2.5.6の環境構築をfabricを使用して、インストールしてみましょう。cakephpはrailsと比べると100倍くらい簡単に環境構築 …

gitpythonでfirst commitする

概要 みなさんこんにちはcandleです。今回はgitpythonで、初めてのコミットをする方法を紹介します。 gitpythonでコミットは難しくないのですが、初めてのコミットは要領が違ったので、ま …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー