Присоединение к Active Record для класса в модуле - PullRequest
0 голосов
/ 09 июля 2020

Rails 6 / Ruby 2.7

Итак, у меня есть два класса ModuleX::SubModuleA::Order и ModuleY::SubModuleB::OrderType

, и я хочу сделать что-то вроде

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

Обычно этот синтаксис был бы довольно простым: ModuleX::SubModuleA::Order.joins(:order_type) но я не могу найти никакой документации относительно того, как это работает для классов в модулях.

1 Ответ

3 голосов
/ 09 июля 2020

Синтаксис joins допускает два использования: во-первых, ссылка на отношение, определенное в левой модели по его (symboli c) имени, или, во-вторых, необработанное SQL. Использование модулей практически не влияет на оба метода, потому что ни один из них не ссылается на класс модели, к которой вы присоединяетесь.

В вашем случае вы, вероятно, захотите настроить связь между заказами и типами заказов, например:

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

Затем вы можете просто выполнить тот же синтаксис, что и ожидаете:

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