Carga ansiosa, dependendo do tipo de associação no Ruby on Rails

Eu tenho uma associação polimórfica (belongs_to :resource, polymorphic: true) Onderesource pode ser uma variedade de modelos diferentes. Para simplificar a questão, assuma que ela pode ser umOrder ou umCustomer.

Se é umOrder Gostaria de pré-carregar o pedido e pré-carregar oAddress. Se for um cliente, eu gostaria de pré-carregar oCustomer e pré-carregue oLocation.

O código usando essas associações faz algo como:

<%- @issues.each do |issue| -%>
<%- case issue.resource -%>
<%- when Customer -%>
<%= issue.resource.name %> <%= issue.resource.location.name %>
<%- when Order -%>
<%= issue.resource.number %> <%= issue.resource.address.details %>
<%- end -%>

Atualmente, minha pré-carga usa:

@issues.preload(:resource)

No entanto, ainda vejo problemas de mais de um para carregar as associações condicionais:

SELECT "addresses".* WHERE "addresses"."order_id" = ...
SELECT "locations".* WHERE "locations"."customer_id" = ...
...

Qual é uma boa maneira de corrigir isso? É possível pré-carregar manualmente uma associação?

questionAnswers(6)

yourAnswerToTheQuestion