ruby-on-rails – 如何在Rails 3.1中使用group()向COUNT列添加CO
发布时间:2020-12-17 04:05:07 所属栏目:百科 来源:网络整理
导读:我有一个UserProfile列表,可能(或可能不)有一个或多个小部件: class UserProfile ActiveRecord::Base has_many :widgetsend@all_profiles = UserProfile.joins(:widgets).group('user_profiles.id').order("name ASC") 在索引视图中,没有在视图的EACH行中执
我有一个UserProfile列表,可能(或可能不)有一个或多个小部件:
class UserProfile < ActiveRecord::Base has_many :widgets end @all_profiles = UserProfile.joins(:widgets).group('user_profiles.id').order("name ASC") 在索引视图中,没有在视图的EACH行中执行新查询以获取@ all_profile.each的小部件计数,是否有一种方法可以向原始位置添加计数列,以显示每个小组中的小部件数量行? (例如,如果有N @all_profiles,请避免重新查询数据库N次? (这不仅对于避免N个额外查询很重要,而且它允许我们在count列上添加SORT选项,以便我们可以按最多小部件的客户进行排序) 解决方法
您可以通过
ActiveRecord::QueryMethods#select 添加COUNT列
@all_profiles = UserProfile.joins(:widgets).select('user_profiles.*,COUNT(*) AS widget_count').group('user_profiles.id').order('name ASC') 现在,每个返回的对象都将包含一个widget_count属性,您可以像访问任何其他模型属性一样访问该属性: @all_profiles.each do |profile| puts profile.widget_count end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |