模型属性调用错误Rails 2.3.8

时间:2011-06-12 15:27:17

标签: ruby-on-rails activerecord

我有一个现有的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方法。有人可以指导我解决这个问题。由于这有很多作者,我不确定他们在哪里使用上述方法。系统也没有任何测试诉讼。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

你可以做到

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

或者更简洁

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