2009-06-14 96 views
0

我已经在铁轨下面的代码:如何从阵列MANY_TO_MANY ASSOCATION的阵列中的Rails

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

我得到的错误:

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是一个数组,所以它的不接受使用关联(.biz_sms_reply_queues)。

我可以找出手动方式来做到这一点,但我想知道是否有更好的简单的方法来做到这一点。

感谢,

回答

0

不知道你是出于什么目的就在这里,它看起来像你需要把第一个“找”为命名的范围。所以它看起来像这样: SmsOffer.valid.by_hub_phone_no(unhndledMsg.hub_phone_no).biz_sms_reply_queues

命名范围返回AR代理对象,因此,您可以使用它们的关联。

什么是“有效”?这不是一种导轨方法。它也是一个命名范围?你也应该把它弄干。

+0

谢谢BJ..valid实际上是一个命名的范围,但它不是问题。我想要做的是获取记录数组的相关记录。如果我做的是这样的: @possibleMatchingOffers = SmsOffer.valid.find(:first) @matchingContact = @ possibleMatchingOffers.biz_sms_reply_queues 它的工作原理!但是一旦我得到了可能的数据记录阵列,它不起作用,我不想循环遍历结果来逐一获取它们,所以我想知道是否有快捷方式在Rails中做到这一点 – Tam 2009-06-15 03:14:46