パーフェクトRuby

パーフェクトRuby

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

第15章まで。

ActiveRecordEnum を使った。

ActiveRecord::Enum

  • lib/todo/task.rb
require 'active_record'

module Todo
  # tasksテーブルを表現するモデルクラスです
  # @author yossk
  class Task < ActiveRecord::Base
    enum status: { not_yet: 0, done: 1, pendng: 2 }

    validates :name, presence: true, length: { maximum: 140 }
    validates :content, presence: true
    validates :status, inclusion: { in: statuses.keys }

    default_scope -> { order("created_at desc") }
  end
end

Enum の使い方はちょっとクセがある。
Task.not_yet などとしてリストを得ることができる。
Enum 型の要素に実際値を当てはめてるのは、より確実にするために、指定した方が良いと感じたため。

% ./bin/todo create -n "パーフェクトRuby" -c "発売日に買いに行く"
  ID | Name                 | Content                                  | Status
---------------------------------------------------------------------------------
  17 | パーフェクトRuby     | 発売日に買いに行く                       | not_yet