【发布时间】:2013-01-30 15:32:07
【问题描述】:
我有一个模特Sport。使用单表继承我有 2 个其他模型,Cricket 和 Football 这样
class Cricket < Sport and class Football < Sport
我将这两个模型放在名为 sports 的模型目录中的子文件夹中。我将类型列添加到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 之类的值放在我的类型列中。
另外,我不想删除子目录结构。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3.2 single-table-inheritance rails-models