2014-09-25 2 views
0

У меня есть объект отношения activerecord, называемый контактами. Каждая модель контактов имеет лидирующую позицию. Я хочу вернуть результаты как отношение, и поэтому я не могу использовать карту, собирать, выбирать.поддерживать отношение activerecord при доступе к отношениям через коллекцию

Очевидно, что это не работает, потому что итератор нарушает соотношение:

contacts.select(&:lead) 

Это работает, но возвращает контакты как отношение объект, а не проводные:

contacts.joins(:lead) 

Поэтому, когда я пытаюсь вызывают метод активации group_by_week на результат:

contacts.joins(:lead).group_by_week(:created_at).size 

created_at Refer s к контактам, тогда как я хочу, чтобы это относилось к выводам.

+0

Почему вы не можете использовать карта? –

+0

@japed, если я использую карту, я получаю эту ошибку: TypeError: неявное преобразование символа в Integer при запуске this: contacts.map (&: lead) .group_by_week (: created_at) .size, потому что group_by_week ожидает отношение не массива. – Donato

ответ

0

Я просто сделать это следующим образом:.

leads = Lead.where(contact_id: contacts) 

Если это не возможно, потребуется выбрать корочки контактов и передавать их в

leads = Lead.where(contact_id: contacts.map(&:id)) 
Смежные вопросы