0
使用單表繼承時,是否必須注意不要填充特定於不同模型的列?有沒有一種方法來指定每個模型使用哪些列?單表繼承(STI)列關聯
使用單表繼承時,是否必須注意不要填充特定於不同模型的列?有沒有一種方法來指定每個模型使用哪些列?單表繼承(STI)列關聯
就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可能不是最好的繼承模型。
好吧,那就是我曾經想過的。還有哪些其他繼承模型可以爲STI提供類似的功能? – 2009-07-21 16:57:45