Ruby on Rails で before_actionの中に定義した変数をアクションの中でも使いたい


before_actionの中で値を設定した変数をアクションの中でも使う方法ってありますか？

たとえば、before_actionにhogeを指定した状態でhugaを呼び出した時、

[code]

    before_action :hoge
    
    def hoge
        val = "abc"
    end
    
    def huga
        puts val
    end
    
[/code]

> abc

となるのを期待しているのですが、そもそも出来るんでしょうか？

クラス変数を使うのが素直？




できません。インスタンス変数を使うのが最も簡単です。

[code]

    before_action :hoge
    
    def hoge
        @val = "abc"
    end
    
    def huga
        puts @val
    end
    
[/code]

処理した内容をメモ化しておいてメソッド名でアクセスする方法もあります。

[code]

    before_action :hoge
    
    def hoge
        @val ||= "abc"
    end
    
    def huga
        puts hoge
    end
    
[/code]

before_actionで一度hogeはよばれていますが`"abc"`は一度しか生成されません。




できません。インスタンス変数を使うのが最も簡単です。

[code]

    before_action :hoge
    
    def hoge
        @val = "abc"
    end
    
    def huga
        puts @val
    end
    
[/code]

処理した内容をメモ化しておいてメソッド名でアクセスする方法もあります。

[code]

    before_action :hoge
    
    def hoge
        @val ||= "abc"
    end
    
    def huga
        puts hoge
    end
    
[/code]

before_actionで一度hogeはよばれていますが`"abc"`は一度しか生成されません。

