Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 正确的rails模型名称空间_Ruby On Rails_Ruby_Model_Namespaces - Fatal编程技术网

Ruby on rails 正确的rails模型名称空间

Ruby on rails 正确的rails模型名称空间,ruby-on-rails,ruby,model,namespaces,Ruby On Rails,Ruby,Model,Namespaces,最近,为了好玩,我启动了一个新的rails项目,并决定在模型中使用名称空间。我有一些困难 例如,我有一个模型聚会: # app/models/party.rb class Party < ActiveRecord::Base end 问题是当我调用Party时,Rails将如何判断我是调用模块Party还是类Party?确实,如果这样做,Ruby会抱怨,因为Party不能同时是模块和类。所以,至少,党需要保持一个阶级 现在,就“Rails方式”而言,我们通常不会对关联进行子类化(即,您

最近,为了好玩,我启动了一个新的rails项目,并决定在模型中使用名称空间。我有一些困难

例如,我有一个模型
聚会

# app/models/party.rb

class Party < ActiveRecord::Base
end

问题是当我调用
Party
时,Rails将如何判断我是调用
模块Party
还是
类Party

确实,如果这样做,Ruby会抱怨,因为
Party
不能同时是模块和类。所以,至少,
需要保持一个阶级

现在,就“Rails方式”而言,我们通常不会对关联进行子类化(即,您的
聊天
可能会
属于
一方
),我们只是将所有模型放在根命名空间中(除非有充分的理由这样做)。因此,你将在
app/models/Party.rb上举行
Party
聚会,在
app/models/Chat.rb上举行
Chat
聚会


我猜只有当已经存在一个不同的
::Chat
时,人们才会创建一个名称空间的子类
Party::Chat
,即使这样,Ruby的不断查找也会带来麻烦,这有时会违反直觉。

感谢您的解释!我正确地理解,对于大型项目,模型文件夹将非常巨大?正确。虽然模型通常只反映数据库中的表。
lib
文件夹也会随着项目的规模而增长。我这样问是因为在本文作者(实际上这是一本书)中,模型名称空间可以减少模型文件夹的耦合性。你觉得怎么样?他适合做一个大的申请。他还说得对,没有发票,“发票项”就不可能存在。(我直观地命名它的方式给出了一个提示)子类化也会对DB表名产生影响,这在以后并不容易更改。然而,我们也必须意识到过早的优化,我认为这是我在这里考虑的主要因素。
# app/models/party/chat.rb

module Party
  class Chat < ActiveRecord::Base
  end
end