Rails使用唯一的字段集进行模型继承

时间:2015-08-10 11:30:21

标签: ruby-on-rails ruby model-inheritance

我有一个带有基本字段集的模型BillService。接下来我想创建两个模型BillItem和BillGroup,它们是这个的继承人,并且有其他字段(每个都有一个唯一的集合)。我还希望能够通过基类获取所有继承实例并检查具体实例的类。

我无法想象如何实现这一点。我试图谷歌它但没有成功。我读到了STI。这就是我需要的东西?

1 个答案:

答案 0 :(得分:0)

ActiveRecord本身支持STI架构。

  1. 创建BillService模型
  2. class BillService < ActiveRecord::Base

    end

    1. 创建文件夹bill_service并在此文件夹中创建sti模型
    2. class BillService < ActiveRecord::Base

      end

      1. 在表bill_services
      2. 中添加类型字段

        add_column :bill_services, :type, :string

        1. 迁移
        2. rake db:migrate

          1. 使用您的STI
          2. rails c

            BillService::BillItem.all

            BillService::BillItem.new

            等于

            BillService.where(type: 'BillService::BillItem')

            ActiveRecord通过YouModel :: YourSubModel自动设置字段类型。