0

Disons que j'ai un modèle A qui a une association de 1 à 1 avec le modèle B. Le modèle B est défini sur 'acts_as_taggable'. Je voudrais retourner une relation d'enregistrement active qui sélectionne tous les attributs A dont l'attribut B est étiqueté avec une certaine chaîne. Il ressemblerait à quelque chose comme: A.where (? B.tagged_with = ', 'some_tag')Rails: act-as-taggable-on: Utilisation de tagged_with sur une relation

Je trouve this SO question, mais je suis intéressé à obtenir une relation d'enregistrement actif retour alors que la 2ème solution est applicable et je ne peux pas le faire fonctionner. Comment puis-je récupérer les relations d'enregistrement actives pour pouvoir appeler d'autres méthodes params de requête? . A.b_tagged_with ('tag') où (...) où b_tagged_with est un champ nommé

Répondre

0

pour répondre à ma propre question, ma définition de portée en A ressemble à ceci:

scope :tagged_with, lambda { |tag| 
    { 
     :joins => "INNER JOIN taggings ON taggings.taggable_id = as.b_id\ 
        INNER JOIN tags ON tags.id = taggings.tag_id AND taggings.taggable_type = 'B'", 
     :conditions => ["tags.name = ?", tag] 
    } 
    } 

Cela dit est retourné à tous les modèles A dont les b membres sont associés à un tag si l'association de tag de taggings a une valeur 'name' égale au paramètre que nous avons passé. Dans cet exemple B 'acts_as_taggable', A ne le fait pas. Cela me permet de faire:

Questions connexes