ruby-on-rails - 正确的 Rails 模型命名空间

标签 ruby-on-rails ruby model namespaces

最近我为了好玩开始了一个新的 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 ),我们只是将所有模型放在根命名空间中(除非有充分的理由)。所以你会有 Partyapp/models/party.rbChatapp/models/chat.rb .

我猜有人会创建一个命名空间子类 Party::Chat仅当有不同的::Chat时已经存在,即使这样也可能会导致 Ruby 的持续查找出现问题,这有时是违反直觉的。

关于ruby-on-rails - 正确的 Rails 模型命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570241/

相关文章:

ruby-on-rails - 如何在 Ruby 中通过元编程访问顶级命名空间?

ruby-on-rails - 我可以在电子邮件上使用字体精美的图标吗

ruby - 如何在不委托(delegate)给 Arel 的情况下在 Rails 5.2 中调用联合

c# - 在 for 循环中将字符串解析为具有 "Model.x"属性的 int 仍保持字符串格式

ruby-on-rails - 从另一个模型更新对象时的缓存问题

ruby-on-rails - Sidekiq错误: could not connect to server: No such file or directory

ruby-on-rails - 如何使用 carrierwave 获取 S3 私有(private)存储桶中对象的访问 url

ruby - 有没有办法在不加载rubygems的情况下调用ruby1.9?

ruby-on-rails - Heroku 部署崩溃 rails 服务器语法错误 File.expand_path ("../spring", __FILE__)

c++ - 嵌套模型/ View 架构