PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Rails não reverte transação após falha ao salvar ()


Adicionar um item à coleção o salva imediatamente (a menos que o usuário não seja salvo). A chamada para salvar cria sua própria transação e é isso que é revertido, não a transação na qual o item foi salvo

Você pode forçar tudo na mesma transação criando uma explicitamente.
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