模块中 class 的 Active Record 连接

Active Record join for class in module

Rails6/Ruby2.7

所以我有两个 类 ModuleX::SubModuleA::OrderModuleY::SubModuleB::OrderType

我想做类似

的事情

ModuleX::SubModuleA::Order.joins("ModuleY::SubModuleB::OrderType")...

这种语法通常非常简单:ModuleX::SubModuleA::Order.joins(:order_type) 但我找不到任何关于模块中 类 如何工作的文档。

joins 的语法允许两种用途:首先,通过其(符号)名称引用在左侧模型上定义的关系,或者其次,原始 SQL。这两种方法实际上都不受模块使用的影响,因为它们都没有引用您要加入的模型的 class

在您的情况下,您可能希望在订单和订单类型之间建立关系,例如:

class ModuleX::SubModuleA::Order
  belongs_to :order_type, class_name: 'ModuleY::SubModuleB::OrderType'
end

然后,您可以按照预期的方式执行相同的语法:

ModuleX::SubModuleA::Order.joins(:order_type).all