Search

検索したいワードを入力してください

2019年03月13日

Railsのconsoleの書き方と使い方のまとめ

ConsoleはWebアプリを開発するのなら学んでおかなければいけません。しかしまだ良く分からなくて中々勉強が手付かずな方も多いのではないでしょうか。この記事では、実際にコマンドを打ち込んでConsoleについて学んで行きます。ぜひ読んでみてください。

Railsのconsoleの書き方と使い方のまとめ

RailsConsoleとは

consoleとは、システムと情報の操作や情報の把握するためのツールです。RailsConsoleでは、モデルクラスの挙動やメソッドを実行することができます。

RailsConsoleを利用するメリットとしては、試してみたい処理をRailsConsoleを使えばすぐに書いて実行することができるのでとても便利です。加えて、RailsConsoleではデバッグの際にも活躍しますのでRailsConsoleを勉強することはとても大事です。

この記事を見て、実際にターミナルまたはコマンドプロンプトで試してみましょう。

consoleの書き方と使い方のまとめ

consoleの起動の仕方

consoleの起動の仕方は、ターミナルまたはコマンドプロンプトにて$ rails consoleと打ちます。
コンソールを終了したい時はquitを打つと終了します。

一番下の文が以下のようになっていればconsoleが無事起動されています。
irb(main):001:0>

consoleコマンドを実行する環境を指定する書き方

consoleでは、デフォルトでは開発環境(development)になっています。consoleでは実行環境を指定することができ、本番環境とテスト環境が存在します。

テスト環境で起動したい場合、以下のコードのように環境名を最後に指定します。
$ rails console test
上のコードではテスト環境を指定してconsoleを開いています。

データを変更することなくコードをテストしたいとき

データを変更することなくコードをテストしたいときは、sandboxを使用するとデータを変更することが無くconsoleを使用することができます。

以下のコードをターミナルまたはコマンドプロンプトで打ちます。
$ rails console --sandbox
ここで何かテストしたいコードを書いて、quitを打ってコンソールを閉じると、
rollback transactionとログが出ます。

これは、コンソール終了時にデータベースに対する全ての変更をロールバックしたことを表しています。

createコマンドを使ってレコード追加する方法

以下のようなモデルが存在することを想定してレコードを追加していきます。

カラム名データ型
namestring
descriptiontext
ageinteger

※このモデルを作成する時のコマンドは$ rails g model Item name:string description:text age:integerです。
モデルを作成した際には$ rails db:migrateを忘れずに打ちましょう。

次にconsoleを立ち上げます。
$ rails console
ここで先ほど作成したテーブルにcreateコマンドを使ってレコードを追加します。(内容は各自自由で大丈夫です。)
Item.create(name:"taro",description:"taroudesu",age:20)

ここでItem.allのコマンドを打つとItemテーブルにあるデータを参照する事ができます。実際にこのコマンドを打ってcreateコマンドでレコードが追加されたか確認してみましょう。

先ほどの追加した情報があれば無事にレコードが追加されたことを意味しています。

レコードを削除する方法

レコードを削除する方法としてdestroyとdeleteがあります。
どちらも構文は同じです。
モデル名.delete(主キー値) , モデル名.destroy(主キー値)
どちらも主キー値を指定して、指定された主キー値のレコードは削除されます。

destroyのコマンドを使用して先ほどの追加したレコードを削除してみましょう。consoleを開いて、createコマンドで先ほどと同じテーブルを3つほど追加します。

そしてItem.find(2).destroyとconsoleで打つと追加したレコードの2番目のレコードが削除されます。この主キー値と呼ばれる番号は、レコードを追加した際に追加したレコードの情報の所にidとして記載されています。この数字がそれぞれのレコードの主キー値となります。

間違って追加してしまった時や消したいレコードがある場合、そのレコードの主キー値を指定して消すと良いでしょう。

複数のレコードをまとめて削除する方法

次は、作成したレコードをまとめて削除する方法を説明します。複数のレコードをまとめて削除するコマンドは、モデル名.destroy_allです。

これを先ほど作成したモデルに適用してみます。
Item.destroy_all
とconsole上で打ちます。そうするとItemモデルにある、全てのレコードが削除されます。

実際にItem.allを打って、レコードを確認してみましょう。

findやwhereメソッドを使ってテーブルの内容を確認する

findメソッドを使ってみよう

findメソッドとは、Active Recordによるもっとも基本的な検索の手段です。主キーによる検索を行います。
構文は以下のとおりです。
find(主キー値)

これを先ほど作成したモデルで使ってみましょう。
Item.find(主キー値)

findメソッドに似たようなメソッドでfind_byメソッドがあります。
find_byメソッドは任意のキー列の検索をすることができます。
構成は以下のとおりです。
モデル名.find_by(カラム名:" ")

これを先ほど作成したモデルを使用して使ってみましょう。
Item.find_by(name:"taro")
しかしこのfind_byメソッドは該当する最初の一件しかデータを取得することができないので
該当するデータを全部欲しいという方は他の方法で試しましょう。

whereメソッドを使ってみよう

whereメソッドとは、条件を設定して該当するレコードを取得するメソッドです。
構文は、モデル名.where(条件)です。

実際に先ほど作成したモデルを使用してconsole上で使ってみましょう。
Item.where(id:1)
このコマンドは、idが1のレコードを探して取得するように条件として指定しています。

Item.where('id<?', 3 )
このコマンドは、idが1~3のレコードを探して取得するように条件として指定しています。
idが1~3のレコードが存在していれば3つのレコードを取得します。

このようにwhereメソッドは探したい情報を条件にしてレコードを抽出してくれます。

例えば、taroさんのレコードを知りたいとなれば、Item.where(name:"taro")と打てば該当するレコードが出てきます。作成したカラム名と探す名前を設定すれば該当するレコードを取得できます。

様々なメソッドを使ってみよう

orderメソッド

orderメソッドとは、データを並び替えるメソッドです。
構文は以下のとおりです。
モデル名.order("カラム名")
指定したカラムがアルファベット順・あいうえお順に並び替えられます。

モデル名.order("カラム名 DESC")
DESCをつけることによって逆順に並び替えられます。idなどの順番を変えたい時などに
使用すると良いでしょう。

モデル名.order('name DESC, age')
このコマンドで2つのカラムを指定して並び替えることができます。

selectメソッド

selectメソッドとは、取得列を明示的に指定するメソッドです。
構文は以下のとおりです。
モデル名.select(:カラム名)

取得したいカラム名をselectメソッドを使用することで取得するとそのカラム名だけのデータのレコード情報が取得できます。

作成したモデルで使用してみます。
Item.select(:name)

whereメソッドと組み合わせることもできます。
item.where('age >= 20').select(:name)
このコマンドは、ageが20以上の名前だけのレコード情報を取得するコマンドです。

巨大なテーブルにおいて条件を指定せずにレコードを取得するのはメモリリソースの無駄遣いです。よってselectメソッドのようなメソッドを活用して条件を指定して取得したい列を取得するのがメモリリソース的にも効率が良いでしょう。

distinctメソッド

distinctメソッドとは、重複のないメソッドを取得するメソッドです。
構文は以下のとおりです。
distinct([重複を除去するか(true,false)])

先ほど作成したモデルで使用してみます。
Item.select(:name).distinct.order(:name)
このコマンドは、同じ名前のカラムを重複のないレコードにしています。

よってdistinctメソッドは、重複レコードを1つにまとめるメソッドと言えるでしょう。

limit/offsetメソッド

limit/offsetメソッドとは、特定範囲のレコードだけを取得するメソッドです。
構文は以下のとおりです。
モデル名.limit(最大取得行数).offset(取得開始位置)

先ほど作成したモデルで使用してみます。
Item.limit(2).offset(3)
このコマンドは、3件目から2件のレコードの情報を取得するといったコードです。

ただ単に範囲を決めてデータを取得するだけのメソッドでなくページング処理も実装できるので勉強していて損はないです。

pluckメソッド

pluckメソッドとは、指定列の配列を取得します。
構文は以下のとおりです。
モデル名.pluck(カラム名)

先ほど作成したモデルで使用してみます。
Item.pluck("id,name")
このコードはItemモデルのidとnameのデータを2重配列としてデータ取得しています。

Item.pluck("id")
このコードのようにカラムを1つだけ指定している場合は、普通の配列として抽出されます。

pluckメソッドはとても描きやすいので色々なところで使用できます。そして抽出されたデータも配列として抽出されるのでとても扱いやすいのではないのでしょうか。

RailsConsoleの勉強の仕方

この記事では、Railsconsoleについて説明しました。たくさんのメソッドがあってRailsを勉強中の方は驚いたのではないでしょうか。このようなメソッドは使いながら覚えるのが一番です。ですので何かRailsを利用して機能を実装する際に必要になったら自分の手を動かしながら書いてみてください。

consoleはデバッグの際にもとても役にたちます。そういった意味では、consoleはとても大事です。今回のこの記事で行ったことは実際にパソコンで打ち込みながら行うとより知識が深まるのでぜひ、Railsで開発を行いながら勉強して見てください。

この記事を見て下さってありがとうございました。

多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related