名称空间更改后,rails模型中的单表继承

时间:2014-02-26 17:53:10

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

我的单个表继承在我的一个模型上工作

module Mod
  class Car < ActiveRecord::Base
  end

  class Ferrari < Car
  end
end

这一切都很有效;

Mod::Car.all
==> select * from cars
Mod::Ferrari.all
==> select * from cars where type = "Ferrari"

不是问题。要求(因为DRB)是我们发布这些非命名空间的模型,所以我创建了一个从工作中继承的全局类;

class Car < Mod::Car; end
class Ferrari < Mod::Ferrari; end

这一切都完美无缺......除了现在正在进行的单表继承;

Ferrari.all
==> select * from cars where type = "Ferrari"
Car.all
==> select * from cars where type = "Car" 

哪个是空的,因为“Car”是一个我们从不创建实例的抽象概念。它不再将“Car”识别为所有其他人的根模型!为什么这个功能在我继承时会改变?

我猜这与rails正在从类结构中推断事物等事实有关。在取消命名空间后,我可以使用哪些属性来重置原始行为?

0 个答案:

没有答案