STI и виртуальное наследование атрибутов (Rails 2.3) - PullRequest
0 голосов
/ 02 октября 2011

Скажем, у меня есть отношения STI, где Commentable - это суперкласс, а NewsComment - это подкласс.В Commentable у меня есть:

attr_accessor :opinionated

def after_initialize
  self.opinionated = true
end

И в NewsComment:

attr_accessor :headliner

def after_initialize
  self.headliner = true
end

Когда создается экземпляр NewsComment, VA self.opinionated не наследуется.Это почему?И как вы можете «заставить» NewsComment унаследовать от Commentable?

1 Ответ

0 голосов
/ 03 октября 2011

Как вы создаете экземпляр объекта NewsComment?Обратный вызов after_initialize выполняется только тогда, когда объект создается средством поиска.Кроме того, способ определения метода может переопределять его поведение.Что если вы используете метод стиля DSL ?: ...

class Commentable
  attr_accessor :opinionated

  after_initialize do
    self.opinionated = true
  end

end

class NewsComment < Commentable
  attr_accessor :headliner

  after_initialize do
    self.headliner = true
  end
end
...