ホーム DoRuby enumで数値型カラムを作る際に、テストデータを作る時に注意すること
enumで数値型カラムを作る際に、テストデータを作る時に注意すること
 

enumで数値型カラムを作る際に、テストデータを作る時に注意すること

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Railsの4.1でenumが使えるようになりました。

一般的には文字列型のカラムを用意して

class User < ActiveRecord::Base
  enum status: { :awake, :sleep, :dead }
end

と書いて

user = User.new(status: :awake)
user.awake? # => true

という使い方をしますが、使うカラムを数値型にすることで

class User < ActiveRecord::Base
  enum status: { awake: 1, sleep: 2, dead: 99 }
end

とすると

user = User.new(status: 1)
user.awake? # => true

とかできるようになります。業務アプリで定数処理しているところが捗りますね。

さて、これのテストを書くときにfactorygirlでモデルを作ろうとして、

FacrotyGirl.define do
  factory :user do
    status 1
  end
end

と書いたら

 Failure/Error: user = build(:user)

 ArgumentError:
  '1' is not a valid status

とエラーが出てしまいました。困る…。
こういう場合、

FacrotyGirl.define do
  factory :user do
    status :awake
  end
end

と名前のほうをfactoryに書けばいいです。

記事を共有

最近人気な記事