ruby-on-rails – Rails 3.2.11中带有模型子目录的单表继承

我有一个模特运动.使用单表继承我有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这样的值.
另外,我不想删除子目录结构.

最佳答案
我自己刚刚处理过类似的问题.请参阅How to reload files in app/models/subdirectory in dev environment for STI.基本上,您需要在初始化和重新加载,父类或配置文件中的require_dependency你的子类.这是一个轨道懒惰的东西,and it doesn’t seem like they want to change it.我发现Alex Reisner’s post也非常有帮助.

转载注明原文:ruby-on-rails – Rails 3.2.11中带有模型子目录的单表继承 - 代码日志