[JAVA] Deklarative Transaktion in Rails #ginzarb

Wenn @a_matsuda auf der Ginza Ruby Conference 01 über deklarative Transaktionen spricht, möchte er nicht, dass Rails deklarative Transaktionen hat? Ich habe so etwas gesagt, also habe ich es schnell mit Edelstein geschafft.

https://github.com/ttanimichi/transactional

Was ist eine deklarative Transaktion?

Eine deklarative Transaktion ist eine Methode zur deklarativen Beschreibung, dass eine Transaktion beim Aufruf einer Methode automatisch ausgeführt wird. Das Spring Framework von Java ist ein bekanntes Implementierungsframework. Für das Spring Framework können Sie deklarative Transaktionen verwenden, indem Sie die Methode mit "@ Transactional" versehen.

@Transactional
public void create(int id) {
    // do something
}

Wie benutzt man

Fügen Sie es Ihrem Gemfile hinzu und führen Sie eine Bundle-Installation durch.

gem 'transactional'

Jetzt müssen Sie nur noch in "Transaktion" die Aktion angeben, mit der Sie in Controller eine Transaktion durchführen möchten.

class YourController < ApplicationController
+  transactional :create, :update
+
  def index
  end

  def create
    Post.create!(name: 'john', age: 42)
    Topic.create!(title: 'invalid title')
    render plain: :created
  end

  def update
  end
end

Führt automatisch eine Transaktion durch, wenn die angegebene Aktion aufgerufen wird.

Processing by YourController#create as HTML
   (0.2ms)  BEGIN
  SQL (0.5ms)  INSERT INTO "posts" ("name", "age", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"  [["name", "john"], ["age", 42], ["created_at", "2017-08-06 08:23:13.980493"], ["updated_at", "2017-08-06 08:23:13.980493"]]
   (0.2ms)  ROLLBACK

In diesem Beispiel können Sie sehen, dass die Beiträge EINFÜGEN zurückgesetzt werden, wenn das Thema erstellen! Eine Ausnahme auslöst.

Recommended Posts

Deklarative Transaktion in Rails #ginzarb
Group_by in Rails
Modellassoziation in Rails
Hinzufügen von Spalten in Rails
Deaktivieren Sie Turbolinks in Schienen
^, $ im regulären Ausdruck von Rails
Verwenden Sie Bilder mit Schienen
Migration in Schienen verstehen
Teilen Sie route.rb in Rails6
Markdown in Rails implementiert
[Rails] Holen Sie sich UserAgent auf den Controller
Japanisieren Sie mit i18n mit Rails
Implementieren Sie die LTI-Authentifizierung in Rails
Edelstein oft in Schienen verwendet
Monatskalender in Rails anzeigen
Verwenden Sie mehrere Kontrollkästchen in Rails6!
Rails: Erfassen Sie reguläre Ausdrücke in E-Mails!
[Rails] Einstellung des Sitzungszeitlimits im Gerät
Fügen Sie eine Suchfunktion in Rails hinzu.
Aktivieren Sie jQuery und Bootstrap in Rails 6 (Rails 6).
[Rails] Implementierung des Anmeldebildschirms in Devise
[Rails] Unerwarteter Validierungsfehler im Gerät
Über das Symbol <%%> in Rails erb
[Rails] Verwenden Sie Cookies im API-Modus
Implementieren Sie eine einfache Anmeldefunktion in Rails
Erstellen Sie eine neue App mit Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
[Lösung] Webpacker :: Manifest :: MissingEntryError in Rails
Implementieren Sie ein Kontaktformular in Rails
Entfernen Sie "Assets" und "Turbolinks" in "Rails6".
CRUD-Funktion und MVC in Rails
So installieren Sie jQuery in Rails 6
Hinzufügen der ersten Paginierungsfunktion in Schienen
Daten sind nicht in Rails registriert.
[Rails 6] Passen Sie Bootstrap in der Rails + Bootstrap 5.0.0-Alpha-Umgebung an
Implementieren Sie die CSV-Download-Funktion in Rails
Ruby-Methoden, die häufig in Rails verwendet werden
So installieren Sie Swiper in Rails