Warum würde diese Transaktion Rollback nicht, wenn auch nur eine erstellen! scheitert? Es ist in einem Controller, wenn das einen Unterschied macht.Rails-Transaktion wird nicht zurückgesetzt
def process_photos(photos)
ActiveRecord::Base.transaction do
begin
photos.each do |photo|
Photo.create!(creator_user: @user, buyer: @buyer, url: photo['url'])
end
rescue
raise ActiveRecord::Rollback
end
end
end
Ich sende explizit ein Array mit einigen schlechten Aufzeichnungen. Die Guten werden erschaffen und die Schlechten sind nicht, aber ich brauche das Ganze, um Rollbacks zu machen, wenn selbst eines scheitert.
Hier ist meine Rspec Test (Übergabe einer JSON-Array von Fotos) und es erhöht sich.
expect { post :create, json }.not_to change(Photo, :count)
Etwas scheint falsch mit Ihrem verschachtelten @ kjs3. Insbesondere scheint 'ActiveRecord :: Base.transaction do' kein passendes' end' zu haben. – thomasfedb
Kopieren fehlgeschlagen. Es ist richtig verschachtelt. Fest. – kjs3
Es sieht so aus, als ob es sich um ein rspec-Problem handelt. Die Transaktion scheint zurückzurollen, wenn ich mit curle poste. – kjs3