編集: @max の提案に従って、代わりに列挙型を使用するようにモデルを変更していますが、デフォルトの状態でテストすることはできません:
it { is_expected.to validate_inclusion_of(:status).to_allow("draft", "published") }
モデル内の次のコードで正常に動作します。
validates :status, :inclusion => { :in => ["draft", "published"] }
しかし、この部分はまだ失敗します:
it { is_expected.to have_field(:status).with_default_value_of("draft") }
私は Mongoid を使用していることに注意してください。私はモデル仕様にこれを持っています:
古い質問 - 参照用に保管していますか?
it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) }
そして、私のモデルではこれがあります:
field :published, type: Mongoid::Boolean, default: false
まだ機能していません。Mongoid ビットを削除しようとしましたが、同じエラーが発生します。
Failure/Error: it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) }
Expected Post to have field named "published" of type Boolean with default value of false, got field "published" of type Mongoid::Boolean
注:私も試しました:
field :published, type: Boolean, default: false
そして、私のモデルに次のメソッドを追加しました:
after_initialize :set_published, :if => :new_record?
それから
private
def set_published
self.published ||= false
end
しかし、何も機能していないようです。私は何が欠けていますか?