当您使用 rails 脚手架创建命名空间模型时,您会得到两个文件。例如,这个脚手架:
rails generate model Staff::Location name:string address:string
生成这些文件:
/app/models/staff.rb
module Staff
def self.table_name_prefix
"staff_"
end
...
/app/models/staff/location.rb
class Staff::Location < ActiveRecord::Base
...
在开发模式下,rails 卸载 Staff 模块并且从不重新加载它时,我遇到了问题。这会导致一些烦人的错误,例如 Location 由于缺少 table_name_prefix 而无法访问它的表。当我不直接访问模型时,问题似乎出现了,例如通过多态关系。
我似乎无法以一致的方式加载模块。这是做命名空间模型的最佳实践方式吗?如果是,我错过了什么?