2017-10-26 17 views
0

投稿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へaddtionalのクエリ(...)のたくさんの票があるときは複数の質問をします。

これを実装する方法がさらにありますか?

item.votes_for.votersユーザーモデルへのリンクを提供していますが、私は

ありがとう....それを行う場合には、投票日へのアクセスもはありません。

+0

「User」と「Vote」のモードを共有していただけますか? –

答えて

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 
+0

'map'は配列への追加を避けるために使用できます。 –

+0

良い点、私はそれを更新しました、ありがとうございます。 –

+0

偉大な:-)それはうまく動作します:-)私は "を含む"と "<<"を削除するには、.mapを学んだ。お二人のおかげです。 –

関連する問題