Attr_reader для атрибута модели Active Record

Article.rb < ActiveRecord::Base   
... 

attr_reader :title

def title
    self.title.gsub(/"/," ")
end

end

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

SystemStackError in ArticlesController#index or StackLevelTooDeep

Я не уверен, как решить эту проблему. Если я изменю метод на что-то другое, например, ntitle, он будет работать. ЗАЧЕМ?!

1 ответ

Решение

Когда ты звонишь self.title внутри def title он вызывает сам себя, поэтому вы получаете бесконечную рекурсию, и это вызывает ошибку StackLevelTooDeep,

Это должно работать:

class Article < ActiveRecord::Base
  ...

  def title
    read_attribute(:title).to_s.gsub(?", " ")
  end

end
Другие вопросы по тегам