Web3 ハッカソンでRailsでECサイトを構築して使うので、作成完了するまでの構築のメモです。
enumを使って簡単にステータス管理することについて書きます。
Railsのenumは、配列として定義された複数の値の中から、特定の値だけを選択することができるカラム型です。
enumはデータベースレベルで定義され、アプリケーションレベルで使用されます。
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カラムに対して、様々な操作をするためのメソッドを簡単に使用することができます。
enumを使用することで、特定のカラムに対して、制限された値のセットだけが許可されるようになります。
データベースに不正な値が保存されることを防ぐことができます。
enumを使用することで、特定のカラムの値を文字列ではなく、シンボルや定数として扱うことができます。
コードの読みやすさが向上し、バグを発見しやすくなります。
Railsは、enumを使用したカラムに対して、自動的にヘルパーメソッドやスコープメソッドを生成します。
カラムの値を扱うためのコードを書く必要がなくなり、開発効率が上がります。