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

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

関連記事

react-lazyloadを使って画像を遅延ロードをする

概要 みなさんこんにちはcandleです。今回はreact-lazyloadを使って画像の遅延読み込みをしてみましょう。SPAにおける問題は最初の読み込み時の遅さです。その中でも画像が多いサイトになる …

PEARのDBライブラリのインストールと使い方

概要 みなさんこんにちはcandleです。PEARには複数の便利なライブラリがあります。 その中の1つに実はもう古くなってあまり推奨されていませんが、データベースにつないだり、データベースの値を取得す …

Mysqlテーブルの照合順序を変更する

概要 みなさんこんにちはcandleです。今回はテーブルの照合順序を変更する方法を行います。 この方法はやっても、mysqlクエリー1行ですみます。早速やりましょう。 テーブルの照合順序を変更する 次 …

pythonのpipでfabricをインストールする

概要 みなさんこんにちはcandleです。今回はpipでデプロイメントツールのfabricをインストールしたいと思います。 前提 pipがインストールされている

入門ReactでGSAPアニメーションの使い方

概要 みなさんこんにちはcandleです。今回はReactでGSAPを使ってみたいと思います。 簡単にアニメーションが使えるjsライブラリはjQueryが有名です。ただ、jQueryとReactは相性 …

  • English
  • 日本語

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