Named Scopeの使い方

こんにちは!kossyです!




就活ルールについての続報が出てました。
https://headlines.yahoo.co.jp/hl?a=20181009-00000081-asahi-bus_allheadlines.yahoo.co.jp

既にルールそのものが形骸化しているのに、
国が躍起になってルールを守ろうとするのはどうしてなんでしょうかね。
気になります。














さて、今回はRailsでDB検索を行う際に
よく利用する条件句を予め準備する、
名前付きスコープ(Named Scope)について、
ブログに残したいと思います。


環境
Rails5.1.6
Ruby2.5.1
MacOS


名前付きスコープとは

データベース検索のコードを書いていると、同じ条件のコードを何度か書くことがあります。
そのような場合に、名前付きスコープを用いると便利です。
名前付きスコープは、特定の条件式やソート式などを予めモデル側で名前付けすることで、
利用時に名前ですぐに呼び出せるようにしておく仕組みです。

任意のモデルファイル

scope :名前,  -> { 条件句 }

以下は例です

review.rb
省略
scope :revieworder, -> { order(id: 'DESC') }


reviews_controller.rb
省略

def index
  @review = Review.all.revieworder
end

モデルファイルで名前付きスコープを定義することで、
そのままメソッドチェーンとして連鎖させることができます。

上記の例は簡単なものでしたが、
もっと複雑な検索コードになりそうな時に使うとよさそうです。



参考にさせていただいた記事
qiita.com