Je donne les résultats suivants:Arel et association polymorphique rejoint
class BaseReseller < ActiveRecord::Base
set_table_name "resellers"
acts_as_nested_set
has_many :merchants, :as => :merchant_owner, :dependent => :destroy
end
class IPSP < BaseReseller
end
class Agent < BaseReseller
end
class Reseller < BaseReseller
end
class Merchant < ActiveRecord::Base
belongs_to :merchant_owner, :polymorphic => true
end
class MerchantsController < ApplicationController
...
def index
...
@merchants = Merchant.joins(:merchant_owner) # breaks!
end
end
Remarquez que je suis en train de rejoindre le marchand avec le merchant_owner polymorphes et obtenez ceci: ActiveRecord :: EagerLoadPolymorphicError: Ne peut pas charger avec impatience l'association polymorphique : merchant_owner. @merchants = Merchant.includes (: merchant_owner) fonctionne initialement, mais lorsque je commence à parcourir le tableau @merchants dans les vues, il se brise avec la même erreur - semble-t-il parce que nous travaillons avec des relations paresseusement chargées et seulement quand une méthode non-Arel est invoquée, elle va réellement à la base de données.
Des idées? Est-ce que Arel supporte les jointures d'associations polymorphes? Des solutions de contournement? Je peux tomber au SQL pur mais c'est piggy.
Merci
En fait, vous voudrez probablement protéger cette jointure en ajoutant "and merchant_owner_type in ('Agent' , 'Revendeur', 'IPSP') " – njorden