我正在使用Ruby on Rails 3,我想在名称空间内处理模型(类)名称空间。也就是说,如果我有一个命名为NS1的命名空间和一个命名为NS2的命名空间的"子命名空间",我想在NS2中处理模型(类)。
如果我运行scaffold
rails generate scaffold ns1/ns2/Article id:integer title:string
它将生成以下模型文件:
models/ns1/ns2/article.rb file
models/ns1/articles.rb
models/ns1/articles.rb
包含:
module Ns1::Articles
def self.table_name_prefix
'ns1_articles_'
end
end
models/ns1/articles.rb
文件是什么?我如何以及为什么可以使用它?你有什么建议吗?
一般来说,使用Ruby on Rails处理名称空间中的"组合"类的"最佳"方法是什么?
模型/ns1/articles.rb
基本上是为该名称空间下的所有模型类设置表名前缀。这就是它的用途。在那里(在单个文件中)这样做更DRY,而不是在该名称空间下的每个模型类中设置前缀。
我不太喜欢在模型中使用名称空间。但是,您可以参考以下文章来更好地理解如何在模块中使用名称空间。
- 命名空间模型和控制器
在模型中使用名称空间的一些替代方法
- 名称空间模型的简单替代