最近我为了好玩开始了一个新的 Rails 项目,并决定在模型中使用命名空间。我也遇到了一些困难。
例如,我有模型 Party
:
# app/models/party.rb
class Party < ActiveRecord::Base
end
双方都会有聊天
:
# app/models/party/chat.rb
module Party
class Chat < ActiveRecord::Base
end
end
问题是,当我调用 Party
时,Rails 将如何确定我是调用 module Party
还是 class Party
?
最佳答案
确实,如果你这样做,Ruby 会提示,因为 Party
不能同时是模块和类。所以至少,Party
需要保持一个类(class)。
现在,就“Rails 方式”而言,我们通常不会对关联进行子类化(即,您的 Chat
可能会 belong_to
a Party
),我们只是将所有模型放在根命名空间中(除非有充分的理由)。所以你会有 Party
在app/models/party.rb
和Chat
在app/models/chat.rb
.
我猜有人会创建一个命名空间子类 Party::Chat
仅当有不同的::Chat
时已经存在,即使这样也可能会导致 Ruby 的持续查找出现问题,这有时是违反直觉的。
关于ruby-on-rails - 正确的 Rails 模型命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570241/