Ruby on rails ActiveRecord模型子类don';我没有出现
以下是简单继承(STI)设置:Ruby on rails ActiveRecord模型子类don';我没有出现,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,以下是简单继承(STI)设置: 还有,打电话 ruby-1.9.2-p0 > Daughter.subclasses => [] ,正确地不返回任何子类,使父类开始将子类识别为子类: ruby-1.9.2-p0 > Parent.subclasses => [Daughter(id: integer, type: string, created_at: datetime, updated_at: datetime)] 这同样适用于另一个子类: ruby-1
还有,打电话
ruby-1.9.2-p0 > Daughter.subclasses
=> []
,正确地不返回任何子类,使父类开始将子类识别为子类:
ruby-1.9.2-p0 > Parent.subclasses
=> [Daughter(id: integer, type: string, created_at: datetime, updated_at: datetime)]
这同样适用于另一个子类:
ruby-1.9.2-p0 > Son.subclasses
=> []
ruby-1.9.2-p0 > Parent.subclasses
=> [Daughter(id: integer, type: string, created_at: datetime, updated_at: datetime), Son(id: integer, type: string, created_at: datetime, updated_at: datetime)]
这是rails 3,但在2.3.10上显示了相同的行为,我想这是一个自动加载问题。只有在您真正需要时才加载该类。您可以通过示例尝试使用cache_classes=true配置,并查看此结果是否完全相同。我想不是。这是一个 一种解决方法是在基类文件的底部注册子类
%w(daughter son).each {|r| require_dependency r } if Rails.env.development?
ruby-1.9.2-p0 > Son.subclasses
=> []
ruby-1.9.2-p0 > Parent.subclasses
=> [Daughter(id: integer, type: string, created_at: datetime, updated_at: datetime), Son(id: integer, type: string, created_at: datetime, updated_at: datetime)]
%w(daughter son).each {|r| require_dependency r } if Rails.env.development?