Je travaille sur une application qui permet aux utilisateurs d'associer des images à des événements spécifiques. Les événements sont la propriété d'un utilisateur. La solution facile serait bien sûr:Modélisation des données Rails - alternatves à has_many: through, polymorphisme donné?
class Image < ActiveRecord::Base
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :images
belongs_to :user
end
class User < ActiveRecord::Base
has_many :events
has_many :images, :through => :events
end
Except! Il y a un problème. Je veux aussi que mes utilisateurs puissent posséder des images directement, sans événement intermédiaire. Si j'utilise l'association polymorphe "conventionnellement" ici, alors évidemment user.images
ne fonctionnera pas correctement. Devrais-je simplement tenir mon nez, utiliser un :as => :event_images
pour désambiguïser, et définir user.all_images
si ce besoin se présente? Devrais-je avoir toutes les images détenues directement par les utilisateurs et éventuellement associées à des événements en quelque sorte? (Avec, bien sûr, une validation pour assurer la cohérence ... mais cela semble code-malodorant.) Y at-il une troisième solution qui est plus jolie que l'un ou l'autre?