如何获取投票支持的用户名列表,包括他们的ID和投票日期?
这是我的(工作)解决方案......
voters = []
item.votes_for.each do |vote|
voters << { updated_at: vote.updated_at, voter_id: vote.voter_id, voter_name: User.find(vote.voter_id).name }
end
json.voters voters
json.up_votes voters.count
我发现它远非最佳...特别是因为对User.find(...)的附加查询,当有很多投票时会导致多个查询。
是否有更“顽固”的方式来实现它?
item.votes_for.voters提供了一个指向用户模型的链接,但如果我这样做,则无法访问投票日期....
谢谢。
答案 0 :(得分:4)
我建议您在提出要求时使用includes将选民纳入选票。
voters = item.votes_for.includes(:voter).map do |vote|
{ updated_at: vote.updated_at, voter_id: vote.voter_id, voter_name: vote.voter.name }
end