问题描述
|
我已经有一个现有的Rails项目(Rails 2.3.8),并且具有以下具有以下属性的Model:
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
我猜是因为它递归地调用name方法。有人可以指导我解决此问题的方法。由于有很多作者,因此我不确定他们在哪里使用了上述方法。而且系统也没有任何测试服。有人可以帮帮我吗?
解决方法
你可以做
def name
read_attribute(:name).nil? ? \'default name\' : read_attribute(:name)
end
或更简洁
def name
read_attribute(:name) || \'default name\'
end