为单个表继承指定子类映射



继承文档说明了如何轻松实现STI,鉴于您可以选择type列的值。

但是,我有一个遗留数据库,并且这些价值已经存在。假设这些是PRIORITYECONOMYFLEXI,我如何指定如何将这些值映射到子类?

class PriorityPassenger < Passenger
  # map to PRIORITY
end

这应该有效(未经测试(:

ActiveRecord::Inheritance::ClassMethods.prepend(Module.new do
  def find_sti_class(type_name)
    case type_name
    when 'PRIORITY' then PriorityPassenger
    ...
    else super(type_name)
    end
  end
end)

最新更新