我的单个表继承在我的一个模型上工作
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正在从类结构中推断事物等事实有关。在取消命名空间后,我可以使用哪些属性来重置原始行为?