コールバック
class TestController < ApplicationController before_action :test def index end def test @test = 'test' end end
コールバックとは、特定のタイミングでメソッドを動作させる機能のことです。
コールバックには種類があり、
before_action メソッドの実行前(認証、特定のパラメーターの設定に使用)
after_action メソッドの実行後(ログなどに使用)
around_action メソッドの実行前と実行後(トランザクションなどに使用)
skip_before_action 指定したメソッドでbefore_actionを使用しない
skip_after_action 指定したメソッドでafter_actionを使用しない
prepend_before_action before_actionの前に実行
prepend_after_action after_actionの前に実行
等があります。
コールバックはクラス内で
の形式で記入してください。
上の例ではindexメソッドの前にtestメソッドを実行して@testを定義しています。
skip_before_action、skip_after_actionは
のように記入するとtestメソッドではbefore_actionで指定しているtest2メソッドが実行されなくなります。
また、only: 内の配列を,区切りで記入することで複数のメソッドに適用することができます。
コールバックには種類があり、
before_action メソッドの実行前(認証、特定のパラメーターの設定に使用)
after_action メソッドの実行後(ログなどに使用)
around_action メソッドの実行前と実行後(トランザクションなどに使用)
skip_before_action 指定したメソッドでbefore_actionを使用しない
skip_after_action 指定したメソッドでafter_actionを使用しない
prepend_before_action before_actionの前に実行
prepend_after_action after_actionの前に実行
等があります。
コールバックはクラス内で
コールバック名 :メソッド名
の形式で記入してください。
上の例ではindexメソッドの前にtestメソッドを実行して@testを定義しています。
skip_before_action、skip_after_actionは
before_action :test2
skip_before_action :test2, only: [:test]
skip_before_action :test2, only: [:test]
のように記入するとtestメソッドではbefore_actionで指定しているtest2メソッドが実行されなくなります。
また、only: 内の配列を,区切りで記入することで複数のメソッドに適用することができます。