0

Commentable がスーパークラスで、NewsComment がサブクラスである STI 関係があるとします。コメンタブルで私は持っています:

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 に答える