适当的轨道模型命名空间

时间:2016-01-02 20:12:06

标签: ruby-on-rails ruby model namespaces

最近我开始了一个新的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

我的问题是,当我致电Partymodule Party时,我会致电class Party Rails如何判断?

1 个答案:

答案 0 :(得分:3)

的确,如果你这样做,Ruby会抱怨因为Party不能同时成为一个模块和一个类。至少,Party需要保持一个班级。

现在作为“Rails方式”,我们通常不会将我们的关联子类化(即,您的Chat可能会belong_to一个Party),我们只是把我们所有的关联根命名空间中的模型(除非有充分的理由)。因此,Party位于app/models/party.rbChat位于app/models/chat.rb

我猜测只有在已经存在不同的Party::Chat时才会创建一个名称空间的子类::Chat,甚至可能导致Ruby的常量查找出现问题,这有时会违反直觉。 / p>