0

假设我有一个 STI 关系,其中 Commentable 是超类,而 NewsComment 是子类。在可评论我有:

attr_accessor :opinionated

def after_initialize
  self.opinionated = true
end

在新闻评论中:

attr_accessor :headliner

def after_initialize
  self.headliner = true
end

实例化 NewsComment 时,不会继承 VA self.opinionated。这是为什么?你怎么能“强制”NewsComment 继承自 Commentable?

4

1 回答 1

0

你是如何实例化 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
于 2011-10-02T22:33:02.133 回答