joppot

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

プログラミング

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

投稿日:

Pocket

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

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

関連記事

MAMPのSQLiteManagerを使用してsqlite3のテーブルの作成とフィールドの設定、レーコードの挿入を試す

概要 みなさんこんにちはcandleです。前回と引き続き、SQLiteManagerを使用してsqlite3を試してみましょう。 はじめに、書いておきますが、MAMPのSQLiteManagerはSQ …

正規表現を極めるその2

概要 みなさんこんにちはcandleです。今回は前回に引き続き、正規表現を勉強していきましょう。   前提 unixを使用するので、多少、unixコマンドになれていること   サン …

React開発環境構築コマンドcreate-react-appが便利すぎたのでまとめてみた

English 日本語 概要 みなさんこんにちはcandleです。 今回はcreate-react-appコマンドを使ってreactの開発環境の構築とhello worldあたりまでやってみたいと思い …

railsのscaffoldでremote formを使ってフォームの送信をajax化する

概要 みなさんこんにちはcandleです。 今回はrailsのformをremoteを使ってajaxしたいとおもいます。 正直、解説するまでもなく簡単です。 前提 適当なrailsプロジェクトが存在す …

CakePHPでhelloworld

概要 CakePHPでプログラミングのお約束helloworldを行いましょう。 helloworldとは動作確認も含めた、一番最初に書くプログラムコードです。 だいたいはhello worldと単純 …

  • English
  • 日本語

プロフィール


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

スポンサードリンク

アーカイブ