Lorsque vous travaillez avec une association polymorphique, est-il possible d'exécuter un include sur des sous-modèles qui ne sont présents que dans certains types?Ruby on Rails:: inclure dans une association polymorphe avec des sous-modèles
Exemple:
class Container
belongs_to :contents, :polymorphic => true
end
class Food
has_one :container
belongs_to :expiration
end
class Things
has_one :container
end
De l'avis que je vais vouloir faire quelque chose comme:
<% c = Containers.all %>
<% if c.class == Food %>
<%= food.expiration %>
<% end %>
Par conséquent, je voudrais à la charge de la hâte expirations quand je charge c , parce que je sais que j'en aurai besoin tous les derniers. Y a-t-il un moyen de le faire? Juste en définissant un régulier: include m'obtient des erreurs car tous les types fermés n'ont pas d'expiration de sous-modèle.
J'ai mis à jour ma réponse en fonction de nouvelles informations, jetez un oeil. –
Dans quelle version d'ActiveRecord le chargement des associations polymorphes est-il efficace? Cela ne fonctionne pas pour moi dans 3.2.3 – nicholaides
@nicholaides Cela devrait fonctionner dans 3.2.3. Le chargement impatient ne se produit que lorsque vous filtrez par la colonne de type polymorphe. Quelle est l'erreur que vous avez rencontrée? –