2010-11-21 16 views
1

J'ai écrit pas mal d'instructions AREL, mais je suis en train de faire des nœuds sur celle-ci. Voici ma situation:Comment écrire une instruction AREL sur une table auto-référencée

class Product < AR::Base 
    has_many :parents, :class_name => "ProductLink", :foreign_key => :to_product_id 
    has_many :children, :class_name => "ProductLink", :foreign_key => :from_product_id 

    # has an attribute called "identifier" 

end 

class ProductLink < AR::Base 
    belongs_to :parent, :class_name => "Product", :foreign_key => :from_product_id 
    belongs_to :child, :class_name => "Product", :foreign_key => :to_product_id 
end 

Je veux récupérer tous les produits qui ont un produit d'enfant avec un identifiant qui correspond à une certaine valeur. Je me suis tordu dans un bretzel avec ceci, semble facile, mais je l'ai regardé pendant trop longtemps maintenant. J'apprécie toute aide!

Répondre

0

Got it!

brand.products.joins(:children => :child).where(:children => { :child => { :searchable_identifier.matches => "2136" } }) 

Cela fonctionne très bien. Voir les jointures hachées? C'est ce qui me rejetait.

+0

Vous ne pouvez pas appeler 'matches' sur un symbole ...? – rwb