2010-08-26 13 views
2

J'utilise acts_as_taggable_on dans mon application Rails, et je voudrais des conseils sur la meilleure façon de fusionner deux tags. Par exemple, si j'ai une liste d'aliments et que certains sont étiquetés «fromage» et que d'autres sont marqués «lait», quelle est la meilleure façon de combiner ces étiquettes en une seule étiquette «laitière»? Devrais-je simplement trouver tous les documents étiquetés «fromage» et/ou «lait», étiqueter ces enregistrements avec la nouvelle étiquette «produits laitiers» et supprimer les étiquettes et les étiquettes «fromage» et «lait», ou y a-t-il un meilleur moyen de fais ça?Fusion de tags avec acts_as_taggable_on Rails gem

Je l'ai regardé dans la pierre précieuse de docs et les spécifications, et je ne vois pas de méthode spécifique qui regrouperait plusieurs balises. Si je vais la route en plusieurs étapes que je propose ci-dessus, je ne courir aucun risque de gâcher les si l'un des marquages ​​les étapes échoue (si certains dossiers ne le font pas devenir tagguées avec « produits laitiers » pour une raison quelconque et le « fromage « balises sont » supprimés)

Répondre

5

Si vous voulez vous assurer qu'aucune balise sont modifiées à moins que tous les changements réussissent, utilisez une transaction de base de données Le code ressemblerait à quelque chose comme ceci:.

Food.transaction do 
    Food.tagged_with('milk', 'cheese').each do |food| 
    food.tag_list -= ['milk', 'cheese'] 
    food.tag_list << 'dairy' 
    food.save! 
    end 
end 
+0

c'est ne répond pas !!! c'est une façon statique de fusionner des tags !! ce que sur les balises de fusion dans la situation publique !!? –

+0

@MYamanT Euh, remplacer les cordes statiques avec varia bles? – numbers1311407