ActiveRecordのenumが便利です。
enumを使用することで値の判定などわかりやすいコードが書けるようになります。
http://api.rubyonrails.org/v5.1/classes/ActiveRecord/Enum.html
例えば、Spotモデルに下書き(draft)と公開(published)の状態をもつステータスを追加するとします。
Spotモデルにstatusカラムを追加するマイグレーションを作成
rails g migration add_status_to_spot status:integer
Spotモデルにenumを追加
class Spot < ApplicationRecord
belongs_to :prefecture
belongs_to :area
has_many :spot_photos
has_many :spot_galleries
validates :title, presence: true
validates :prefecture_id, presence: true
validates :area_id, presence: true
validates :latitude, numericality: true
validates :longitude, numericality: true
enum status: { draft: 0, published: 1}
end
statusの値をenumで定義します。
statusが0の場合はdraft、1の場合はpublishedにします。