around_actionについて私はひどく混乱しています。どのように機能するのですか?誰かが私に彼らの働き方の例/説明を教えてくれますか?around_actionコールバックはどのように機能しますか?説明が必要です
これは私のアジャイルWeb開発の4本からの引用です:アクションの実行をラップアラウンドコールバック
。コールバックの周りに を2つの異なるスタイルで書くことができます。最初のコードでは、コールバックは です。そのコードは、アクションが実行される前に呼び出されます。コールバックコードがyieldを呼び出すと、アクションが実行されます。アクションが完了すると、コールバックコードは実行を継続します。したがって、yieldの前のコードはbeforeアクションのコールバックのようになり、yieldの後のコードはafterアクションのコールバックになります。コールバックコードがyieldを呼び出さない場合アクションは実行されません。これは、前のアクションコールバックにfalseを返すことと同じです。
これを読んだときに私は一種を取得します。以下はRailsガイドの例です
class ChangesController < ApplicationController
around_action :wrap_in_transaction, only: :show
private
def wrap_in_transaction
ActiveRecord::Base.transaction do
begin
yield
ensure
raise ActiveRecord::Rollback
end
end
end
end
ここで何が起こっていますか? ActiveRecord :: Base.transactionは "before"パートとして始まり、 "after"パートとしてActiveRecord :: Rollbackを送出しますか?この方法には何がありますか?それはショーですか?最後に、yieldメソッドが失敗してコールバック全体が失敗する原因は何ですか?ショーアクションのレンダリングですか?理解できません。助けてください。