我有这样的命名空间控制器和模型:
控制器:模块::保险 型号:模块::保险
这工作正常,但我想删除命名空间模型恢复正常,但保留命名空间控制器。我删除了模型中对“Modules ::”的所有引用,以及控制器中对模型的所有activerecord查询。当我访问该页面时,它返回此错误:
Expected /***/app/models/modules/ins_insurance.rb to define Modules::InsInsurance
我应该做些什么来删除命名空间模型?
答案 0 :(得分:0)
错误的根本原因是rails期望在文件modules/ins_insurance.rb
内声明的类的名称为Modules::InsInsurance
- 文件名必须与类名匹配(稍微转换后谢谢使用Inflector的underscore
和classify
方法:http://apidock.com/rails/ActiveSupport/Inflector/underscore)。因此,请将文件命名为insurance.rb
,您应该没问题。
在一个更广泛的主题上,我只能认为你迟早会使用一个名为modules
的子目录遇到问题 - 至少它在Ruby关键字Module
之间混淆了。如果您正在寻找放置通用代码的地方,请根据需要使用app/lib
然后require
文件。命名空间是一件好事,但除非你顺其自然,否则你最终会与Rails战斗。 (课程学到了很多方法;-)