Dodanie elementu do kolekcji zapisuje go natychmiast (chyba że użytkownik jest niezapisany). Wezwanie do zapisania tworzy własną transakcję i to jest wycofywane, a nie transakcja, w której element jest zapisany
Możesz zmusić wszystko do tej samej transakcji, tworząc ją jawnie.
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