私はこのドメインモデルを持っています:ユーザーはアイテムのグループを持っており、アイテムの状態は検証に失敗する可能性があります。
検証は正常に機能し、を使用すると例外が呼び出されることもありますsave!
。
私のコントローラーには、次のものがあります。
@user.items() << item
if @user.save
render :json => {}, :status => :ok
else
render :json => {:status => :error, :errors => item.errors}, :status => :bad_request
end
最初のPOSTは成功し、2番目のPOSTは失敗しますが、インデックスにヒットすると、2番目のトランザクションがロールバックされなかったかのように、2つのオブジェクトが表示されます。何が起こっている?
私のテストはこれです:
post :create
post :create
get :index
ActiveSupport::JSON.decode(response.body).length.should == 1
編集:サーバーを実行している場合でも、トランザクションはロールバックされていません(sqlite3)。