use*_*052 33 ruby namespaces ruby-on-rails class ruby-on-rails-3
我正在使用Ruby on Rails 3,我想在命名空间中处理模型(类)命名空间.也就是说,如果我有一个名为NS1的名称空间和名为NS2的名称空间的"子名称空间" ,我想在NS2中处理模型(类).
如果我运行脚手架
rails generate scaffold ns1/ns2/Article id:integer title:string
Run Code Online (Sandbox Code Playgroud)
它将生成以下模型文件:
models/ns1/ns2/article.rb file
models/ns1/articles.rb
Run Code Online (Sandbox Code Playgroud)
该models/ns1/articles.rb
包含:
module Ns1::Articles
def self.table_name_prefix
'ns1_articles_'
end
end
Run Code Online (Sandbox Code Playgroud)
什么是models/ns1/articles.rb
文件?我如何以及为何使用它?您对使用它有什么建议吗?
而且,一般来说,使用Ruby on Rails在命名空间中处理"组合"类的"最佳"方法是什么?
the*_*fme 30
该
车型/ NS1/articles.rb
基本上是为该命名空间下的所有模型类设置表名前缀.这是它的用途.在那里(在单个文件中)做更多的DRY',而不是在该命名空间下的每个模型类中设置前缀.
我不是在我的模型中使用命名空间的忠实粉丝.但是,您可以参考以下文章以更好地理解在模块中使用命名空间.
在模型中使用名称空间的一些替代方法
希望这可以帮助.