Ruby on rails 正确的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方式”而言,我们通常不会对关联进行子类化(即,您
聚会
:
# 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