2009-06-14 2 views
0

Я следующий код в Rails:Как получить массив 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).

Я могу выяснить, как это сделать вручную, но мне было интересно, есть ли более простой способ сделать это.

Спасибо,

Tam

ответ

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 он работает! но как только я получаю массив записей для возможногоMatchingOffers, он не работает, и я не хочу пробивать результаты, чтобы получить их один за другим, поэтому мне было интересно, есть ли ярлык для этого в Rails – Tam

+0

Можете ли вы опубликовать/скажите мне, что делает biz_sms_reply_queues? Требуется ли массив или объект AR Proxy? –

Смежные вопросы