【Rails】ActiveRecord で定義した enum をスコープとして検索できる

例えば以下のようなモデルがあったとして

class Book < ApplicationRecord
  enum category: { 
    hidtory: 1, technorogy: 2, comics: 3
   }
end

enum で定義したものは検索用のスコープも追加される。 そのため、history の結果を取得したければ、こんな感じで書けばいい。

books = Book.history
# SELECT "books".* FROM "books" WHERE "books"."sales_status" = ?

また、history 以外を取得したい場合は not_ を頭につければいい。

books = Book.not_history
# SELECT "books".* FROM "books" WHERE "books"."sales_status" != ?

not_ は知らなかったが、めっちゃお手軽。