单表继承(STI)列关联

时间:2009-07-21 16:28:50

标签: ruby-on-rails single-table-inheritance

使用单表继承时,是否必须注意不要填充特定于不同模型的列?有没有办法指定每个模型使用哪些列?

1 个答案:

答案 0 :(得分: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可能不是最好的继承模型。