撤消模型命名空间会导致错误

时间:2012-03-15 17:55:28

标签: ruby-on-rails-3

我有这样的命名空间控制器和模型:

控制器:模块::保险 型号:模块::保险

这工作正常,但我想删除命名空间模型恢复正常,但保留命名空间控制器。我删除了模型中对“Modules ::”的所有引用,以及控制器中对模型的所有activerecord查询。当我访问该页面时,它返回此错误:

Expected /***/app/models/modules/ins_insurance.rb to define Modules::InsInsurance 

我应该做些什么来删除命名空间模型?

1 个答案:

答案 0 :(得分:0)

错误的根本原因是rails期望在文件modules/ins_insurance.rb内声明的类的名称为Modules::InsInsurance - 文件名必须与类名匹配(稍微转换后谢谢使用Inflector的underscoreclassify方法:http://apidock.com/rails/ActiveSupport/Inflector/underscore)。因此,请将文件命名为insurance.rb,您应该没问题。

在一个更广泛的主题上,我只能认为你迟早会使用一个名为modules的子目录遇到问题 - 至少它在Ruby关键字Module之间混淆了。如果您正在寻找放置通用代码的地方,请根据需要使用app/lib然后require文件。命名空间是一件好事,但除非你顺其自然,否则你最终会与Rails战斗。 (课程学到了很多方法;-)