はじめに
Gaiax Group Advent Calendar 2018の記事の一つです!
少し前にtechpitMarketさんの教材を参考にrailsで作ったアプリをherokuで公開したらみんなに遊んでもらえたのでデータベースからデータを取り出す方法について書きます!
環境
-ruby on rails
-cloud9
-heroku
手順
初めにcloud9上で自分が作ったアプリの階層に移動します。
移動したらcloud9上からherokuにログインします。
$ cd "自分のアプリ名"
$ heroku login
このときうまくログインできなかったら以下のコマンドを試してみてください。
$ heroku login --interactive
あとは以下のコマンドを打てば
$ heroku run rails console
koppe:~/environment/seminar-ssi (master) $ heroku run rails console
Running rails console on ⬢ seminar-ssi... up, run.1679 (Free)
Loading production environment (Rails 5.2.1)
irb(main):001:0>
このようにconsoleが立ち上がります!
テーブル内の全レコードを取得
.allを使ってテーブルの全レコードを取得しようとします。
irb(main):001:0> @datas = Inquiry.all
D, [2018-12-01T09:34:52.636125 #4] DEBUG -- : Inquiry Load (4.0ms) SELECT "inquiries".* FROM "inquiries" LIMIT $1 [["LIMIT", 11]]
するとなぜかlimitが掛かっていてレコードが11件しか取り出せませんでした。
今度はこちらがlimitを指定してやってみました。
irb(main):005:0> @datas = Inquiry.limit(50)
D, [2018-12-01T09:43:52.664790 #4] DEBUG -- : Inquiry Load (1.6ms) SELECT "inquiries".* FROM "inquiries" LIMIT $1 [["LIMIT", 11]]
これでもlimitが掛かってしまいました...
11件しか表示できない仕様なのかとあきらめかけていたら...
irb(main):012:0> Inquiry.first(20)
D, [2018-12-01T10:46:45.503676 #4] DEBUG -- : Inquiry Load (0.9ms) SELECT "inquiries".* FROM "inquiries" ORDER BY "inquiries"."id" ASC LIMIT $1 [["LIMIT", 20]]
firstを使ったら任意のレコード数を取得できました!
firstは@hoge = テーブル名.frist(n)
とすることで最初からn個データを取ってくることができます。
テーブル名.last
も同じように使えます。
irb(main):015:0> Inquiry.count
D, [2018-12-01T10:54:40.965828 #4] DEBUG -- : (1.1ms) SELECT COUNT(*) FROM "inquiries"
=> 106
countで全カラム数を取得して
irb(main):016:0> Inquiry.first(106)
D, [2018-12-01T10:56:04.402121 #4] DEBUG -- : Inquiry Load (2.0ms) SELECT "inquiries".* FROM "inquiries" ORDER BY "inquiries"."id" ASC LIMIT $1 [["LIMIT", 106]]
firstの引数に入れてあげれば全データを取得できました!!
irb(main):020:0> Inquiry.where("email LIKE ?", "a8117%").first(50)
D, [2018-12-01T11:10:02.295685 #4] DEBUG -- : Inquiry Load (3.8ms) SELECT "inquiries".* FROM "inquiries" WHERE (email LIKE 'a8117%') ORDER BY "inquiries"."id" ASC LIMIT $1 [["LIMIT", 50]]
こんな風に他の条件の最後にfirstを付けてあげればlimit(11)に縛られることなく検索できます!
下記の参考記事を見ながら色々遊んでみてください。
ここまで読んでくださりありがとうございました。
参考)
ActiveRecord + MySQLでレコード抽出
Rails - モデルから特定のカラムのみ取得
Railsのモデル検索あれこれ
Ruby on Railsを使っての基本的なデータ取得を学ぶ
Rails入門 where likeであいまい検索!複数条件やOR条件も解説