shou2017.com
JP / EN

rails, whereメソッドを使って複雑な条件で検索する

Sat Aug 5, 2017
Sat Aug 10, 2024

一覧表示する場合は、下のようにすれば良いだけですが、シンプルすぎて複雑なものはできません。

def index
  @samples = Sample.all
end

より、複雑なことをするためには、クエリメソッドを使います。

よく使うやつ

メソッド概要
where条件でフィルタリング
not否定の条件式を表す
order並び替え
reorderソート式を上書き
select列の指定
distinct重複のないレコードを取得
limit抽出するレコードを指定
offset抽出を開始する数を指定。limitと一緒に使う
group特定のキーで結果をグループ化
havingGROUP BYにさらに制約をつける
joins他のモデルと結合
includes関連するモデルをまとめて取得
readonly取得したオブジェクトを読み取り専用に
none空の結果セットを取得

whereメソッドと使って自分が作ったものしか表示されないようにする

def index
  @samples = Sample.all
end

単純にallだけでは、自分だけではなくて、他のユーザーのものも表示されるので、whereメソッドを使って自分のだけを表示されるようにします。下の例は、sampleを作ったuserと現在のユーザーが同一のものだけをフィルタリングするという意味です。

def index
  @samples = Sample.where(user_id: current_user.id)
end
See Also