2011-10-02 68 views
0

假設我有一個STI關係,其中Commentable是超類,而NewsComment是子類。在Commentable我:STI和虛擬屬性繼承(Rai​​ls 2.3)

attr_accessor :opinionated 

def after_initialize 
    self.opinionated = true 
end 

而且在NewsComment:

attr_accessor :headliner 

def after_initialize 
    self.headliner = true 
end 

當實例化NewsComment,self.opinionated的VA不被繼承。這是爲什麼?你怎麼能「強制」NewsComment從Commentable繼承?

回答

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