2011-04-07 3 views
1

J'ai une has_and_belongs_to_many association dans mes rails 3 app. J'utilise également la nouvelle méthode respond_with pour générer automatiquement le XML pour l'API REST.Comment inclure la relation habtm pendant la sérialisation

L'association HABTM se trouve entre DataSource et Parameter et la table de jointure est data_sources_parameters.

Quand j'écris respond_with DataSource.all, :include => parameter, il fonctionne et je reçois la réponse attendue

<data-sources type="array"> 
<data-source> 
<created-at type="datetime">2011-04-05T14:05:22Z</created-at> 
<id type="integer">1</id> 
<updated-at type="datetime">2011-04-05T14:05:22Z</updated-at> 
<url>http://www.yahoo.com/weather</url> 
<parameters type="array"/> 
</data-source> 
</data-sources> 

La réponse indique que les paramètres pour chaque source de données seront incluses dans la source de données. Cependant, cela ne fonctionne que lorsqu'il n'y a pas d'association réelle, mais que la table de jointure est vide.

Le moment où je crée réellement une association entre deux entrées de base de données, j'obtiens l'erreur "méthode non définie` type 'pour nil: NilClass "et le journal pointe vers la ligne de code ci-dessus.

Quelqu'un peut-il m'aider à comprendre pourquoi cela se produit?

+0

Vous utilisez habtm dans rails3? Pourquoi n'utilisez-vous pas 'has_many: through'? –

+0

Il n'y a pas d'autre modèle qui relie DataSource et Parameter. Comment suggéreriez-vous d'utiliser has_many: through? – codinguser

+0

Désolé - j'avais l'impression que habtm était déprécié - mais ce n'est pas le cas. Votre relation peut certainement être implémentée comme suit: à travers, mais si vous n'avez pas besoin d'accéder à des données sur la jointure, cela ne sert à rien. –

Répondre

Questions connexes