Activerecord:获取特定列和关联的关联计数
好吧,所以我们的Accounts
有很多具有很多Impressions
Schedules
。
我想获取Accounts.name
,所有Accounts.schedules
,但只获取Accounts.schedules.date
, Accounts.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_date
和schedule_impression_count
如果您需要在同一视图中将这些对象用于其他数据,则Account.eager_load(schedules: :impressions)
也应该起作用,并且还将执行单个查询。
- ‘includes’方法似乎不适用于Rails 4中的’where’
- t。模型中迁移vs belongs_to的参考?
- Ruby on Rails:ActiveRecord对象创建的确认页面
- 对存储在数组中的数据进行Ransack搜索(运算符不存在:整数 =整数)
- 源reflection宏无效:has_many:through
- 如何通过Rails 3中的时间片(总和,平均值,最小值,最大值等)获取聚合数据
- Rails 4:Model:Class的未定义方法`relation_delegate_class’
- 每当有人试图批量分配受保护的属性时,都会抛出exception
- 检索给定用户评论的所有post,Ruby on Rails