User.rb
has_many :votes
has_many :photos
Photo.rb
has_many :votes
belongs_to :user
Vote.rb
belongs_to :user
belongs_to :photo
我想列出投票的用户。但是此列表必须包含有关用户投票的次数的信息。例如,当我去url photos / 5 / statistics时必须有如下列表:
1) User1 voted 30 times
2) User432 voted 15 times
3) User43 voted 12 times
任何帮助将不胜感激。
答案 0 :(得分:5)
使用group_by是一种方法
例如:
Photo.first.votes.group_by(&:user).each do |user, votes|
puts "User #{user.id} voted #{votes.count} times"
end
答案 1 :(得分:1)
所以基本上,你是在Photo模型中运作的:
class Photo < ActiveRecord::Base
...
def voting_list
votes.joins(:user).group(:user).count
end
...
这将为您提供如下的OrderedHash:
{<user_object_1> => 14, <user_object_2> => 33, ...}
答案 2 :(得分:0)
如果您想知道单个用户为特定照片投票的次数,您可以执行以下操作:
user = User.find_by_some_option
photo = user.photos.first
photo.votes.find{|vote| vote.user == user}.count