最近我开始了一个新的rails项目,只是为了好玩,并决定在模型中使用命名空间。我有一些困难。
例如,我有模型Party
:
# app/models/party.rb
class Party < ActiveRecord::Base
end
每一方都有Chat
:
# app/models/party/chat.rb
module Party
class Chat < ActiveRecord::Base
end
end
我的问题是,当我致电Party
或module Party
时,我会致电class Party
Rails如何判断?
答案 0 :(得分:3)
的确,如果你这样做,Ruby会抱怨因为Party
不能同时成为一个模块和一个类。至少,Party
需要保持一个班级。
现在作为“Rails方式”,我们通常不会将我们的关联子类化(即,您的Chat
可能会belong_to
一个Party
),我们只是把我们所有的关联根命名空间中的模型(除非有充分的理由)。因此,Party
位于app/models/party.rb
而Chat
位于app/models/chat.rb
。
我猜测只有在已经存在不同的Party::Chat
时才会创建一个名称空间的子类::Chat
,甚至可能导致Ruby的常量查找出现问题,这有时会违反直觉。 / p>