ume

rails6 scopeメソッドと使い方

scopeメソッドとは?

ActiveRecordの機能の一つで自分のオリジナルのSQLを作成できメソッドのように扱える。

ActiveRecordとは?

⇨メソッドのようにSQLが扱える機能。例find_byメソッドやcreateメソッドなど。

例 データベースからデータを取得する.
Active Record

User.find_by(name: "コナン")

↓発行されるSQL

SELECT * FROM users WHERE name = 'コナン' LIMIT 1;

使い方

コントローラーの中で↓のようにして使う

モデル.スコープメソッド
Blog.published

app/models/blog.rbにpublishメソッドを定義する

class Blog < ApplicationRecord
  scope :published, -> { where(published: true) }
end

↑でBlogモデル内のpublishedカラムがtrueのものを取得するという意味。

まとめ

  • scopeメソッドはSQLをあまり理解していなくても直感的にSQLを扱える

  • 可読性が高くコードが読みやすい。

参考資料

https://pikawaka.com/rails/scope