acts-as-votable :获取一组具有姓名和投票日期的选民

acts-as-votable : Get an array of voters with names and date of voting

如何获取投票给 post 的用户名列表,包括他们的 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(...) 的附加查询可能会导致在有很多选票时进行多次查询。

是否有更多 "railsy" 的实现方式?

item.votes_for.voters 向用户模型提供 link,但如果我这样做,则无法访问投票日期....

谢谢。

我建议在您请求时使用 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