处理命名空间中的命名空间模型(类)

Posted

技术标签:

【中文标题】处理命名空间中的命名空间模型(类)【英文标题】:Handling namespace models (classes) in namespace 【发布时间】:2011-08-16 16:40:00 【问题描述】:

我正在使用 Ruby on Rails 3,我想在命名空间中处理模型(类)命名空间。也就是说,如果我有一个名为 NS1 的命名空间和一个名为 NS2 的命名空间的“子命名空间”,我想在 中处理模型(类) NS2.

如果我运行一个脚手架

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 处理命名空间中“组合”类的“最佳”方法是什么?

【问题讨论】:

【参考方案1】:

models/ns1/articles.rb

基本上是为该命名空间下的所有模型类设置表名前缀。这就是它的用途。在那里(在单个文件中)做更多 DRY'ish,而不是在该命名空间下的每个模型类中设置前缀。

我不喜欢在我的模型中使用命名空间。但是,您可以参考以下文章来更好地了解在模块中使用命名空间。

Namespaced models and controllers

在模型中使用命名空间的一些替代方法

A simple alternative to namespaced models

希望这会有所帮助。

【讨论】:

如果你想要一个名为 ns1 的模型怎么办?那你怎么办? 你为什么不喜欢命名空间模型?

以上是关于处理命名空间中的命名空间模型(类)的主要内容,如果未能解决你的问题,请参考以下文章

如何防止从命名空间内访问类?

将带有命名空间和属性的 XML 转换为 C# 模型类

Rails 中的命名空间模型:联合的状态是啥?

ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,

获取命名空间内的所有类[重复]

如何在 Ruby 类/模块命名空间中翻译模型?