Door een item aan de collectie toe te voegen, wordt het onmiddellijk opgeslagen (tenzij de gebruiker niet is opgeslagen). De oproep om op te slaan creëert zijn eigen transactie en dat is wat wordt teruggedraaid, niet de transactie waarin het item is opgeslagen
Je zou alles in dezelfde transactie kunnen forceren door er expliciet een te maken.
begin
User.transaction do
@user.items << item
@user.save!
render :json => {}, :status => :ok
end
rescue ActiveRecord::RecordInvalid
render :json => {:status => :error, :errors => item.errors}, :status => :bad_request
end