2014-09-25 81 views
0

我有一个名为contacts的activerecord关系对象。每个联系人模式都有一个主角。我想返回潜在客户关系,因此我无法使用地图,收集,选择。通过集合访问关系时保持活动记录关系

显然,这不起作用,因为迭代器打破了关系:

contacts.select(&:lead) 

这工作,但返回联系人作为关系对象,而不是线索:

contacts.joins(:lead) 

因此,当我尝试对结果调用group_by_week active关联方法:

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

created_at refer对联系人,而我希望它指的是线索。

+0

你为什么不能使用地图? – 2014-09-25 15:59:53

+0

@japed如果我使用map,我得到这个错误:TypeError:在运行this时不会将Symbol隐式转换为Integer:contacts.map(&:lead).group_by_week(:created_at).size,因为group_by_week期望关系不是数组。 – Donato 2014-09-25 16:01:06

回答

0

我只是不喜欢这样。

leads = Lead.where(contact_id: contacts) 

如果失败,则可能需要选择联系人的ID和传递这些在

leads = Lead.where(contact_id: contacts.map(&:id))