2009-06-14 12 views
0

Ich habe den folgenden Code in Rails:Wie Array von MANY_TO_MANY assocation von Array bekommen in Rails

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

Der Fehler Ich erhalte:

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 ist ein Array so ist es nicht akzeptieren, die Assoziation zu verwenden (.biz_sms_reply_queues).

Ich kann manuell Weg, es zu tun, aber ich fragte mich, ob es bessere Möglichkeit gibt, dies zu tun.

Danke,

Tam

Antwort

0

Ohne zu wissen, was Sie wollen damit, es sieht aus wie Sie das erste „find“ in einen Namen Umfang drehen müssen. So wäre es etwa so aussehen: SmsOffer.valid.by_hub_phone_no(unhndledMsg.hub_phone_no).biz_sms_reply_queues

Scopes AR Proxy Objekte zurück, und somit können Sie eine Verbindung zu ihnen verwenden.

Was ist "gültig"? Dies ist keine Schienenmethode. Ist es auch ein benannter Bereich? Das solltest du wahrscheinlich auch trocknen.

+0

Dank BJ..valid ist eigentlich ein benannter Bereich, aber es ist nicht das Problem. Was ich tun möchte, ist, verwandte Datensätze für Array von Datensätzen zu bekommen. Wenn ich etwas mache wie: @possibleMatchingOffers = SmsOffer.valid.find (: erste) @matchingContact = @ possibleMatchingOffers.biz_sms_reply_queues es funktioniert! aber sobald ich ein Array von Datensätzen für mögliche MatchingOffers bekomme, funktioniert es nicht und ich möchte nicht durch die Ergebnisse durchlaufen, um sie nacheinander zu bekommen, also habe ich mich gefragt, ob es eine Verknüpfung dafür in Rails gibt – Tam

+0

Kannst du/Sag mir, was biz_sms_reply_queues tut? Will es ein Array oder ein AR Proxy-Objekt? –