J'ai un peu de mal à mettre en place une relation Rails has_many :through :polymorphic.
Je suis conscient que ce sujet est bien documenté sur SO mais je pense que mon problème est dû à mon modèle et aux noms des clés étrangères plutôt qu'à la syntaxe, c'est-à-dire que je pense que c'est un problème de "j'ai regardé le code trop longtemps" qui nécessite juste une autre paire d'yeux.
Quoi qu'il en soit, j'ai la configuration suivante :
class Milestone < ActiveRecord::Base
has_many :responsible_items, :as => :responsibility
has_many :responsible, :through => :responsible_items
end
class ResponsibleItem < ActiveRecord::Base
belongs_to :responsible, :class_name => "User"
belongs_to :responsibility, :polymorphic => true
end
class User < ActiveRecord::Base
has_many :responsible_items, :foreign_key => :responsible_id
has_many :responsibilities, :through => :responsible_items
end
Cela semble fonctionner correctement, sans erreur, du côté de Milestone. Par exemple, dans le terminal, je peux écrire :
Milestone.first.responsible
et j'obtiens une collection vide comme je m'y attendais.
Cependant, du point de vue de l'utilisateur, la course :
User.first.responsibilities
renvoie une erreur AR :
ActiveRecord::HasManyThroughAssociationPolymorphicSourceError: Cannot have a has_many :through association 'User#responsibilities' on the polymorphic object 'Responsibility#responsibility'.
Je suppose que le problème est lié au fait que je fais référence à la relation Utilisateur en tant que :responsable. Est-ce exact ?
Toute aide serait très appréciée, merci.