У меня есть несколько похожих моделей (ContactEmail, ContactLetter, ContactPostalcard).
Каждый экземпляр (запись) в, скажем, ContactEmail означает, что конкретный шаблон электронной почты был отправлен конкретному контакту.
Итак, каждый (например, ContactEmail) belongs_to :contact
Итак, в модели ContactEmail есть атрибут ContactEmail.contact_id
.
Каждый контакт имеет виртуальный атрибут company_name.
Итак, когда я напишу следующее, я получу все электронные письма, отправленные в рамках определенного набора условий (в данном случае, времени):
@sent_emails = ContactEmail.find(:all, :conditions => "conditions here")
Итак, @sent_emails.size
сообщит мне сумму всех отправленных писем.
Моя задача: как извлечь дополнительную детализацию от уникальной компании для разных моделей?
Вывод, который мне нужен, будет выглядеть следующим образом:
FROM 8/1/10 TO 8/10/10 (where the dates are dynamic)
Calls Letter Postalcards
Company 1 4 2 4
Company 2 10 4 6
Company 3 2 3 4
Таким образом, у Company3 есть 2 Calls, что означает, что было две записи ContactCalls, когда sent_date попадает между двумя датами, и где связанный контакт принадлежит Company 3.
Компания 1-3 не установлена заранее. Его необходимо извлечь из пула ContactCalls, ContactLetters и ContactPostalcards .....
Проблема в том, что я не знаю, что это за компании. Они являются атрибутами части контактов каждой отдельной записи. Так что в некоторых случаях у меня может быть Company2 имеет 0 букв.
Спасибо за любые рекомендации! :)
Как мне найти компанию по заданной записи для модели ContactEmail:
ContactEmail.contact.company.name
Это вернет ассоциированную компанию для определенного ContactEmail