2014-03-31 87 views
0

符號不要工作,我有一些虛擬方法的控制器來測試這是爲什麼不工作(見於軌道4,5):與equals方法在Rails的

class Foo::BarController < ApplicationController 
    before_action :foo 

protected 

    def foo 
    session[:foo] ||= rand(100) 
    bar 
    end 

    def foo=(n) 
    puts "Reassigning foo" 
    session[:foo] = n 
    end 

    def bar 
    foo=(33) 
    puts "Session is #{session[:foo]}" 
    end 

當我訪問控制器中的任何路由:從Foo::BarController繼承,日誌顯示例如Session is 12,並且foo=方法從不評估。

我該如何獲得此setter方法來激發?

+0

@MurifoX當你說'和你的屬性相同'時,我不太明白嗎? –

+0

沒關係我的評論。 =] – MurifoX

回答

2

請致電foo=作爲self.foo=,如下所示。

def bar 
    self.foo=(33) 
    puts "Session is #{session[:foo]}" 
    end 

沒有selffoo被視爲local variable和從未調用的方法foo=

+0

完美,再次感謝! – tyler

+0

很高興幫助:) –