1

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?

Répondre

0

Je ne sais pas, mais vous pouvez essayer quelque chose comme suit:

class TagGroup < ActiveRecord::Base 
    has_many :tag_group_tags 
    has_many :tags, :through => :tag_group_tags 
    has_many :products, :conditions => ['tags = ?', self.tags] 
end 
Questions connexes