目次
- scopeメソッドとは.
- 使い方.
scopeメソッドとは.
モデルにおけるscopeとはActiveRecordの機能の一つです.
モデル側で共通の条件式(クエリ処理)に名前を付けて定義し、その名前でメソッドのように呼び出すことができる仕組みのことです。要は名前で言うニックネームみたいなもの。例えば、「松田ゆうき」と言う人がいたときに名前を呼ぶ時毎回松田ゆうきというのは面倒臭いので「まっちゃん」と呼んだりする。つまりまっちゃん=松田ゆうき、と省略している.
例)モデルにscope定義
(publishedカラムはtrueかfalseで公開・非公開を管理)
class Blog < ApplicationRecord where(published: true) end
↑のようなSQLがあった時 呼び出す時いちいち
Blog.where(published: true)
とデータベースから情報を取得できるがわかりにくい。なのでwhere(published: true)の処理にpublishedという名前をつけて
Blog.published
とした方が直感的に何がしたいかわかりやすい.
使い方.
class モデル名 < ApplicationRecord scope :スコープの名前, -> { 条件式 } end
第一引数にシンボルを使ってスコープの名前を指定します.
第二引数の-> { 条件式 }はlambdaと言い、処理の中でメソッドを定義してくれます。
->(アロー関数)はlambdaのリテラルです。
引数を定義すると、呼び出すときにブロックに渡すことができます。
補足.
ActiveRecordとは
⇨一言で言えば「RubyとSQLの翻訳機」です。
データベースに何かしらの命令(データベースからデータを取得、削除したり)をするときSQLという言語で命令しないといけないが、ActiveRecordがあるおかげでrubyで何かしらの命令をデータベースにできる.