2009-06-14 11 views
0

J'ai le code suivant dans Rails:Comment obtenir tableau de assocation many_to_many de tableau dans Rails

@possibleMatchingOffers = SmsOffer.valid.find(:all, :conditions => {:hub_phone_no => unhndledMsg.hub_phone_no}) 
    @matchingContact = @possibleMatchingOffers.biz_sms_reply_queues.valid.find(:all) 

L'erreur que je reçois:

You have a nil object when you didn't expect it! 
You might have expected an instance of Array. 
The error occurred while evaluating nil.each 

@possibleMatchingOffers est un tableau il est donc n'acceptant pas d'utiliser l'association (.biz_sms_reply_queues).

Je peux trouver la manière manuelle de le faire mais je me demandais s'il y a un meilleur moyen facile de le faire.

Merci,

Tam

Répondre

0

Sans savoir ce que vous êtes l'intention est là, il semble que vous devez tourner le premier « trouver » dans un champ nommé. Cela ressemblerait à ceci: SmsOffer.valid.by_hub_phone_no(unhndledMsg.hub_phone_no).biz_sms_reply_queues

Les étendues nommées renvoient des objets AR Proxy, et vous pouvez donc utiliser une association.

Qu'est-ce que c'est «valide»? Ce n'est pas une méthode de rails. Est-ce aussi une portée nommée? Vous devriez probablement sécher cela aussi.

+0

Merci BJ..valid est en fait une portée nommée mais ce n'est pas le problème. Ce que je veux faire est d'obtenir des enregistrements liés pour un tableau d'enregistrements. Si je fais quelque chose comme: @possibleMatchingOffers = SmsOffer.valid.find (: d'abord) @matchingContact = @ possibleMatchingOffers.biz_sms_reply_queues ça marche! mais une fois que je reçois un tableau d'enregistrements pour eventMatchingOffers cela ne fonctionne pas et je ne veux pas faire une boucle sur les résultats pour les obtenir un par un alors je me demandais s'il y avait un raccourci pour le faire dans Rails – Tam

+0

Pouvez-vous poster/Dites-moi ce que biz_sms_reply_queues fait? Veut-il un tableau ou un objet AR Proxy? –

Questions connexes