改訂:ここでのエラーは、複数の異なるモデルを同じハッシュに格納していたことです。これは、私がどのように配列を構築していたのか、内部的な方法でした。とにかく、私はここでエラーのために謝罪します。どのように私がそれに尋ねられたかに疑問に答える方法はありませんでした。RSpec before(:each)ブロックの検証エラーが奇妙な動作をしています
コントローラスペックにRSpec before(:each)ブロックがあります。私の例のモデルはステータスフィールドと次の検証があります。
class Model < ActiveRecord::Base
STATI = [ "vacant", "deleted", "deactivated"]
...
validates :status, :inclusion => { :in => STATI }
...
end
をそして、私の仕様で、私は次のコードを持っています。
describe Controller do
...
describe "some methods" do
before(:all) do
@models = []
10.times { @models << Factory(:model) }
end
before(:each) do
@models.each { |m| m.update_attributes(:status => "vacant") }
end
...
end
end
私が仕様を実行すると、他のすべてのブロックがうまく動作します。 ActiveRecord :: RecordInvalid: 検証に失敗しました:ステータスはリスト に含まれておらず、m.update_attributes(:status => "vacant")という行を指しています。
ありがとうございました。
「Factory.model」でどのようなステータスを作成しますか? – apneadiving
側注: "@models = 10.times.map {工場(:モデル)}" または "@models = FactoryGirl.create_list(:モデル、10)" – tokland
apneadiving、工場は同じステータス使用: "空き" を –