2009-07-21 81 views

回答

1

就Rails而言,每個列都可以在每個子類中設置。您可以添加邏輯到您的子類模型,以防止設置某些字段,但沒有自動的方式來這樣做。你可以實現它有一個before_save過濾器。

class MySubModel < MyModel 
    UNUSED_FIELDS = %w{ field_x field_y field_z } 
    def before_save 
    UNUSED_FIELDS.each {|f| self.send("#{f}=", nil)} 
    end 
end 

雖然如果你有很多隻被一個子類使用的列,STI可能不是最好的繼承模型。

+0

好吧,那就是我曾經想過的。還有哪些其他繼承模型可以爲STI提供類似的功能? – 2009-07-21 16:57:45