act-as-votable:获得一系列选民的姓名和投票日期

时间:2017-10-26 10:32:12

标签: ruby-on-rails activerecord acts-as-votable

如何获取投票支持的用户名列表,包括他们的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提供了一个指向用户模型的链接,但如果我这样做,则无法访问投票日期....

谢谢。

1 个答案:

答案 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