2009-12-30 4 views
0

Mes résultats SQL produits de @ = Product.find_by_sql() me donne ce (Rails modèles constructeur XML/données de groupe

ID title,  user_name 
1 Product1 Xpeper 
1 Product1 John 
2 Product2 Xpeper 

Comment puis-je construire XML dans mon dossier de vue xml.builder si la source Bould soit comme ce

<products> 
    <product> 
     <id>1</id> 
     <title>Product1</title> 
     <users> 
     <user>Xpeper</user> 
     <user>John</user> 
     </users> 
    </product> 
    <product> 
     <id>2</id> 
     <title>Product2</title> 
     <users> 
     <user>Xpeper</user> 
     </users> 
    </product> 
</products> 

Je voudrais regrouper des éléments par des produits. Thx!

Répondre

0

une façon vous pouvez le faire est de séparer l'utilisateur et le produit, ayant une relation plusieurs à plusieurs (has_and_belongs_to_many) betw een les. J'imagine que vous avez déjà un modèle Utilisateurs distinct. Avec la relation has_and_belongs_to_many, vous pourrez accéder aux utilisateurs d'un produit dans @ product.users (un tableau).

+0

Un exemple? Les deux modèles sont liés avec une jointure interne. – xpepermint

+0

Je ne sais pas comment vous l'avez résolu, ou si vous avez accès aux tables de la base de données. Mais voici comment je le ferais. J'aurais 2 modèles, un appelé utilisateur et un produit alors il y aurait une relation plusieurs à plusieurs entre eux (beaucoup à beaucoup est appelé has_many_and_belongs_to_may dans les rails) est vous spécifiez has_many_and_belongs_to_may dans les deux modèles, vous pouvez accéder à l'utilisateur qui a le produit à procuct.users et les produits qu'un utilisateur a à user.products. – adamse