🕛 2023.1.21 02:47

Railsのenumを使って簡単にステータス管理する

Web3 ハッカソンでRailsでECサイトを構築して使うので、作成完了するまでの構築のメモです。

enumを使って簡単にステータス管理することについて書きます。

enumとは

Railsのenumは、配列として定義された複数の値の中から、特定の値だけを選択することができるカラム型です。

enumはデータベースレベルで定義され、アプリケーションレベルで使用されます。

enumを使用することで、データベースに保存される値を制限し、コードの読みやすさを向上させることができます。

Railsでenumを使用する例

class Product < ApplicationRecord
  enum status: [:active, :inactive, :discontinued]
end

これにより、Productモデルのstatusカラムはactive、inactive、discontinuedのいずれかの値だけを取ることができるようになります。

そして、このenumを使用して、Productオブジェクトの状態を変更することができます:

product = Product.first
product.active!
product.status # => "active"

また、Railsは、statusカラムに対して、status_active?、status_inactive?、status_discontinued?のようなヘルパーメソッドを自動的に生成します。

product.active? # => true
product.inactive? # => false

他にも、 statusがactiveの商品を取得するために、scopeメソッドも生成されます。

Product.active

statusカラムに対して、様々な操作をするためのメソッドを簡単に使用することができます。

Railsでenumを使用するメリット

制限された値をセットする

enumを使用することで、特定のカラムに対して、制限された値のセットだけが許可されるようになります。

データベースに不正な値が保存されることを防ぐことができます。

コード の可読性がアップする

enumを使用することで、特定のカラムの値を文字列ではなく、シンボルや定数として扱うことができます。

コードの読みやすさが向上し、バグを発見しやすくなります。

自動生成されるメソッド

Railsは、enumを使用したカラムに対して、自動的にヘルパーメソッドやスコープメソッドを生成します。

カラムの値を扱うためのコードを書く必要がなくなり、開発効率が上がります。

プロフィール

プログラマー歴20年の管理人がプログラミング、ブロックチェーンなどの話題に書いていきます。>>続く

目次Toggle Table of Content