0

我有一个复杂的多对象查询,用于向客户报告并且不依赖于新的交易数据。随着我正在处理的数据量,使用自定义查询而不是加载我的所有模型似乎更有效(我最初正在这样做,即使使用有效的过滤,它也变得很慢)。

我已经创建了一个类来表示我的报告(组合来自多个模型的属性),但我被困在现在看起来相当容易的事情上。

我有一个名为AttendeeReport的新课程

它具有以下属性:

 attendee_id, first_name, last_name, email_address, rsvp_id, response_id, etc

这用于报告(在 jquery 数据表中,可能在其他地方),我正在使用此查询从多个模型中正确提取到我正确属性的数组中:

list =  Attendee.joins(:event).joins(:focus_group_prospect).joins(:post_focus_group_survey).joins(:lead).joins(:vendor).where("events.focus_group_client_id = ?", client_id).select("attendees.id as attendee_id, leads.first_name, etc").all

如何在不使用数组中的每个字段的情况下将该结果映射到新的 AttendeeReport 数组?是否有我不熟悉的合并或地图功能可以动态执行此操作?

注意:我已经大大减少了显示的属性数量,因为它们无关紧要。

更新:反射?

如果没有一种简单的方法可以通过映射或合并来做到这一点,请考虑这一点,想知道反射方法是否也可以工作(遍历所有属性并将它们匹配)。

4

0 回答 0