我有一个现有的Rails项目(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
我猜是因为它以递归方式调用name方法。有人可以指导我解决这个问题。由于这有很多作者,我不确定他们在哪里使用上述方法。系统也没有任何测试诉讼。有人可以帮助我吗?
答案 0 :(得分:1)
你可以做到
def name
read_attribute(:name).nil? ? 'default name' : read_attribute(:name)
end
或者更简洁
def name
read_attribute(:name) || 'default name'
end