Ошибка вызова атрибута модели Rails 2.3.8 - PullRequest
0 голосов
/ 12 июня 2011

У меня есть существующий проект Rails (Rails 2.3.8), и я получил следующую модель со следующим атрибутом:

class School < ActiveRecord::Base

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

end

Я догадался, что оригинальный автор пытается вернуть значение по умолчанию для имени как default name в этом коде.Но проблема в том, что мой код пытается получить доступ к атрибуту имени:

school = School.find(1)

school.name 

, и я получаю эту ошибку:

stack level too deep

Я думаю, это потому, что он вызывает метод именирекурсивно.Может кто-нибудь направить меня в обход этого.Поскольку у этого было много авторов, я не уверен, где они использовали вышеупомянутый метод.И у системы также нет никакого испытательного костюма.Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

1 голос
/ 12 июня 2011

Вы могли бы сделать

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

Или более кратко

def name
  read_attribute(:name) || 'default name'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...