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
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
}
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