我使用Alex Reisner 博客文章中的一些技巧在我的一个模型中实现了 STI 。我已经让我的所有子类都使用超类的控制器,并使用序列化/存储来保存额外的属性。我将model_name
andself.select_options
方法添加到超类中,并从 Alex 的博客中添加了预加载初始化程序。我还更改了我collection_select
在 _form 视图助手和属性验证中的使用self.select_options
方法。我所有的子类都在 app/models/subfolder 中的单个文件中,尽管它们不像 SubFolder::Subclass 那样命名空间。
然后我开始遇到问题。更改任何代码后,self.select_options
停止返回所有子类。它只返回一个小子集或不返回。因此,由于验证和 _form 绑定,我无法在代码更改后编辑/更新我的模型。据我所知,当我更改任何代码时,Rails 会重新加载环境,但不会重新加载子文件夹中的模型。
我尝试像许多建议一样将路由添加到 config.autoload_paths ,但最终没有奏效。
所以最终,我想要:
- 修复自动加载的东西,所以我不必在每次更改后重新启动服务器
- 基于包含所有子目录的子目录,以避免手动维护数组
- Rails 3.2.11,红宝石 1.9.3p125,ubuntu 12.04.01,rvm