У меня есть следующие ассоциации:
class User < ApplicationRecord
has_many :orders
end
class Order < ApplicationRecord
belongs_to :user
has_one :invoice
end
class Invoice < ApplicationRecord
belongs_to :order
has_one :receipt
end
class Receipt < ApplicationRecord
belongs_to :invoice
end
Я хочу вернуть все чеки по всем заказам, которые есть у пользователя.
Если бы отношения были один к одному на всем пути вниз, это было бы просто:
user = User.find(...)
user.order.invoice.receipt
Поскольку есть много заказов, я обнаружил, что хочу нанести на карту и сгладить. Я не хочу этого делать. Кажется, я не могу найти источники, которые помогают мне по-настоящему обмануть эту концепцию. Нужно ли мне определять отношение through
? мне нужно использовать .joins
?
Как вернуть квитанцию по счету на все заказы, принадлежащие конкретному пользователю?