Reputation: 554
I'm using includes in saving the result in a variable.
@users = User.where(:id => Issue.select(:author_id).map(&:author_id))
@release_users = ReleaseUser.includes(@users).order('user_id')
In ReleaseUser
table I have some fields as: id
, user_id
, release_id
....
I need to make some calculates in a view.
Example:
<%= @release_users.find { |release_user| release_user.id == 2 }.user_id %>
Now, I need to count the occurrences in this table for each user.
I tried:
<%= @release_users.where(:user_id => 1).count %>
<%= @release_users.where(user_id => 1).count %>
But I can't, please, sorry for my English.
Thanks
--UPDATE-- The result of:
<% @release_users.each do |release_user| %>
user_id: <%= release_user.user_id %>
release_id: <%= release_user.release_id %>
<br>
<% end %>
is
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
UPDATE 02 - Error message
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:
UPDATED 03 - ReleaseUser model
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
Upvotes: 0
Views: 101
Reputation: 441
I'm not sure what you're trying to accomplish in that last code snippet, but if you want to count each user, do the following:
<%= @release_users.group(:user_id).count %>
Alternatively:
<% counts = @release_users.group(:user_id).count %>
This groups the records by user_id, then counts each group. In the second example, you can access individual counts of items with e.g. counts[2]
giving you the user count for the user with id 2.
Source: http://guides.rubyonrails.org/active_record_querying.html
EDIT: This code snippet will output each user's count in a table. Try to see if you still get a configuration error.
<table>
<% counts = @release_users.group(:user_id).count %>
<td>
<% counts.each do |userid,count| %>
<tr><%= userid %></tr>
<% end %>
<td>
</table>
Upvotes: 4
Reputation: 29349
@release_users.group(:user_id).count
This will give you a hash with user_id as key and count as value
{1 => 2, 2 => 4}
Upvotes: 1