0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsでの検索の基本

Posted at

基本的な検索方法

  • find
    DBから条件にマッチしたオブジェクトを取得する。複数のオブジェクトを取得する事が出来る。
    条件にマッチするレコードが見つからない場合、ActiveRecord::RecordNotFound例外が発生する。

  • first
    主キー順の最初のレコードを取り出す。
    引数を与えなければ、id:1が取得される。Dog.first(3)とすれば、idが1〜3のオブジェクトが取得される。

  • find_by
    与えられた条件にマッチするレコードのうち、最初のレコードのみを返す。
    マッチするレコードがない場合、ActiveRecord

  • select
    特定のカラムのみを取り出したいときに使用する。
    Dog.select(“name”)
    のように使用する。

大規模なテーブルに対しての検索方法

大規模なテーブルに対して検索を行う際は、find_eachメソッドとfind_in_batchesメソッドを使用する。
find_eachメソッドとfind_in_batchesメソッドを使用すれば、メモリを圧迫しない
1回に取り出すレコード数を指定するオプション、主キーが何番目以降のレコードを取り出すかを指定するオプション等がある。

検索時に使用するオプション的なやつ

  • distinct
    重複のない一意の値のみを取り出したい時に使用する。
    Dog.select(“name”).distinct

  • limit
    .limit(5)のように使用する。この場合は、最大で5件のみという意味になる。

  • offset
    .offset(30)のように使用する。この場合は、31件目のレコードから取得する事を意味する。

where句

文字列などをwhereメソッドに引数として渡す事で、where句の役割を果たす。
Dog.where(“id = ?”, params[:id])
上記のように、paramsを用いて、値を渡す事ができる。
Dog.where(“id = #{params[:id]}”)のように直接値を渡してはいけない。悪意のある人が自由に変数を渡す事ができてしまう。

“id = ?”の部分は、「id:」のようにプレースホルダで置き換える事ができる。

Railsガイド
https://railsguides.jp/active_record_querying.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?