これは、セッション変数のハードコーディングを避けるために使用しているコードです。
#application_controller
def redirect_to_new_order?
session[:redirect_to_new_order]
end
def redirect_to_new_order=(value)
session[:redirect_to_new_order] = value
end
#another_controller
#.............
def some_action
redirect_to_new_order = true
#viewed by debugger
# redirect_to_new_order? is equal to nil
# session[:redirect_to_new_order] is equal to nil as well
end
あなたが見ることができるように、redirect_to_new_order?
そして何らかの理由でありsession[:redirect_to_new_order]
ます。nil
なぜこうなった?
更新:これは上記と同様のコードです。ただし、メソッドを呼び出し、ローカル変数を作成しません。なんで?
class SomeClass
def initialize
@some_var = "999"
end
def var1
@some_var
end
def var1=(value)
@some_var=value
end
def method1
var1 = 111
puts var1
puts @some_var
end
end
a = SomeClass.new
a.method1 # prints 111 and 999 but why?