我有一个模型Sport
。使用单表继承我有2个其他模型,Cricket
和Football
,所以
class Cricket < Sport and class Football < Sport
我把这两个模型放在名为sports的models目录下的子文件夹中。我将类型列添加到Sport
并将值设置为Cricket
或Football
,无论适当的是什么。此外,我能够使用Cricket.new
或Football.new
创建对象。
此结构在Rails 3.2.6之前正常工作。
但是现在使用Rails 3.2.11,子文件夹中的任何模型文件都必须进行模块化。所以,它现在看起来像这样:
module Sports
class Cricket < Sport
现在,rails无法单独加载类Cricket
或Football
。因此,Cricket.new
或Football.new
不起作用。如果我Sports::Cricket.new
,那么对我来说这是一个问题,因为类型列必须是类名,即Sports::Cricket
。
在Rails 3.2.11中我应该怎样做才能使单表继承工作?我不想在我的类型列中添加Sports::Cricket
之类的值。
另外,我不想删除子目录结构。
答案 0 :(得分:1)
require_dependency
你的子类在初始化和重新加载,在父类或配置文件中的某个地方。这是一个铁路延迟加载的东西,and it doesn't seem like they want to change it。我发现Alex Reisner's post也非常有帮助。
答案 1 :(得分:0)
你试过这个吗?
config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')]