Activerecord:获取特定列和关联的关联计数

好吧,所以我们的Accounts有很多具有很多Impressions Schedules

我想获取Accounts.name ,所有Accounts.schedules ,但只获取Accounts.schedules.dateAccounts.schedules.summary以及Accounts.schedules.summary的数量。

这里是一个可视化的我想要给一个帐户(我想要所有帐户)

 Account: .name Schedules .date .summary count(Schedule.impressions) 

以下是查询过多的代码

 Account.find_each do |account| puts a.name # Account.name a.schedules.each do |schedule| puts schedule.date # Account.schedule.date puts schedule.summary # Account.schedule.summary puts schedule.impressions.count # Count(Account.schedule.impressions) 

我想在尽可能少的查询中做到这一点,也许也可以学到一些东西! 我喜欢效率和优化。

使用选择查询

 Account. joins(schedules: :impressions). select("accounts.name as account_name, schedules.date as schedule_date, schedules.summary as schedule_summary, count(impressions.id) as schedule_impression_count" ). group("accounts.name,schedules.date,schedules.summary") 

应该在单个查询中执行,然后对象将响应列别名’like schedule_dateschedule_impression_count

如果您需要在同一视图中将这些对象用于其他数据,则Account.eager_load(schedules: :impressions)也应该起作用,并且还将执行单个查询。