我正在使用includes将结果保存在变量中。
@users = User.where(:id => Issue.select(:author_id).map(&:author_id))
@release_users = ReleaseUser.includes(@users).order('user_id')
在ReleaseUser
表中,我有一些字段:id
,user_id
,release_id
....
我需要在视图中进行一些计算。
示例:
<%= @release_users.find { |release_user| release_user.id == 2 }.user_id %>
现在,我需要为每个用户计算此表中的出现次数。
我试过了:
<%= @release_users.where(:user_id => 1).count %>
<%= @release_users.where(user_id => 1).count %>
但我不能,对不起我的英语。
由于
- UPDATE-- 结果:
<% @release_users.each do |release_user| %>
user_id: <%= release_user.user_id %>
release_id: <%= release_user.release_id %>
<br>
<% end %>
是
user_id:85 release_id:1 user_id:66 release_id:1 user_id:94 release_id:1 user_id:254 release_id:1 user_id:52 release_id:1 user_id:263 release_id:2 user_id:90 release_id:2 user_id:73 release_id:2 user_id:56 release_id:2 user_id:43 release_id:2 user_id:196 release_id:2 user_id:183 release_id:2
更新02 - 错误消息
ActiveRecord::ConfigurationError in User_reports#index
Showing /var/www/base2_crowdtest/relatorios/ultimo/trunk/app/views/user_reports/_second_tab.html.erb where line #28 raised:
#<User id: 2, contact_id: 2, system_role_id: 1, system_idiom_id: 1, status_id: 2, company_id: nil, username: "jose.mario", email: "", opt_in: nil, password_hash: "", password_salt: "", auth_token: "", oauth_token: nil, oauth_expires_at: nil, provider: nil, uid: nil, password_reset_token: nil, password_reset_sent_at: nil, last_login_at: "2014-02-28 18:13:47", created_at: "2012-03-02 21:43:08", updated_at: "2014-02-28 18:13:47">
Extracted source (around line #28):
25:
26: <%= @release_users.group(:user_id).count %>
27:
28:
29:
30: <div id="details" class="active display-fields">
31:
更新03 - 发布用户模型
class ReleaseUser < ActiveRecord::Base
belongs_to :release, touch: true # para invalidar o cache de contagem de testadores
belongs_to :user
belongs_to :role, class_name: 'ReleaseRole'
attr_accessible :user, :user_id, :role, :role_id
attr_readonly :release_id, :user_id
答案 0 :(得分:4)
我不确定您在最后一个代码段中尝试完成的操作,但如果您想计算每个用户,请执行以下操作:
<%= @release_users.group(:user_id).count %>
可替换地:
<% counts = @release_users.group(:user_id).count %>
按user_id对记录进行分组,然后对每个组进行计数。在第二个示例中,您可以使用以下方法访问各个项目的计数。 counts[2]
为您提供ID为2的用户的用户计数。
来源:http://guides.rubyonrails.org/active_record_querying.html
编辑:此代码段将在表格中输出每个用户的计数。尝试查看是否仍然出现配置错误。
<table>
<% counts = @release_users.group(:user_id).count %>
<td>
<% counts.each do |userid,count| %>
<tr><%= userid %></tr>
<% end %>
<td>
</table>
答案 1 :(得分:1)
@release_users.group(:user_id).count
这将为您提供一个哈希,其中user_id为键,并计为值
{1 => 2, 2 => 4}