Je modèlesRails has_many: par association à l'aide et sur l'association moyenne
class Product < ActiveRecord::Base
has_many :product_tags
has_many :tags, :through => :product_tags, :source => tag
end
class ProductTag < ActiveRecord::Base
belongs_to :product
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :product_tags
has_many :products, :through => :product_tags, :source => :tag
has_many :tag_group_tags
has_many :tag_groups, :through => :tag_group_tags, :source => :tag_group
end
class TagGroupTag < ActiveRecord::Base
belongs_to :tag
belongs_to :tag_group
end
class TagGroup < ActiveRecord::Base
has_many :tag_group_tags
has_many :tags, :through => :tag_group_tags
end
je voudrais définir l'association sur TagGroup
qui me donnerait SEULEMENT Product
« s qui sont attribués à tous les Tag
» s qui sont en que TagGroup
Disons que j'ai:
product1
product2
tag1
tag2
tag_group1
avec l'association suivante s:
product1.tags << tag1
product2.tags << tag1
product2.tags << tag2
tag_group1.tags << tag1
tag_group1.tags << tag2
Quand je tag_group1.products
je voudrais obtenir que product2
parce que product2
est affecté à la fois tag1
et tag2
.
product1
ne doit pas être retourné parce qu'il est seulement attribué à tag1
Toute idée comment faire?