【问题标题】:Single Table Inheritance (STI) column associations单表继承 (STI) 列关联
【发布时间】:2009-07-22 00:55:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 可能不是最好的继承模型。

    【讨论】:

    • 好吧,我就是这么想的。还有哪些继承模型可以提供与 STI 类似的功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    相关资源
    最近更新 更多