sql >> データベース >  >> RDS >> PostgreSQL

save()が失敗した後、Railsがトランザクションをロールバックしない

    コレクションにアイテムを追加すると、すぐに保存されます(ユーザーが保存されていない場合を除く)。saveを呼び出すと、独自のトランザクションが作成され、アイテムが保存されたトランザクションではなく、ロールバックされます。

    明示的に作成することで、すべてを同じトランザクションに強制することができます。

    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
    


    1. MySQLの「タイムスタンプの更新」列-トリガー

    2. MariaDBでのMICROSECOND()の動作

    3. GROUP_CONCATを使用しない理由は?

    4. DjangoAutoFieldの開始値を変更する