2011-06-12 25 views
0

我有一個現有的Rails項目(滑軌2.3.8)和我在與下列屬性型號:模型屬性調用錯誤的Rails 2.3.8

class School < ActiveRecord::Base 

    def name 
    read_attribute(:name).nil? ? 'default name' : self.name 
    end 

end 

我猜原作者試圖返回此代碼中名稱的默認值爲default name。但問題是,我有我的代碼試圖訪問的name屬性:

school = School.find(1) 

school.name 

,我得到這個錯誤:

stack level too deep 

我想這是因爲它的遞歸調用的名稱的方法。有人可以指導我解決這個問題。由於這有很多作者,我不確定他們在哪裏使用了上述方法。而且該系統也沒有任何測試服。有人可以幫幫我嗎?

回答

1

你可以做

def name 
    read_attribute(:name).nil? ? 'default name' : read_attribute(:name) 
end 

或者更簡潔

def name 
    read_attribute(:name) || 'default name' 
end 
+0

感謝,它的工作:d – sameera207 2011-06-13 07:08:09