假设:
@votes (user_id, option_id)
如果:@project.votes
我获得该项目的所有投票。
如果我想查看当前用户投票的内容,我必须这样做:
Votes.where(:user_id => current_user.id).first
这是@project投票查询中已有的记录。有没有办法在第一个查询中找到记录而不必重新编写db?
由于
答案 0 :(得分:3)
您可以使用常规ruby Enumerable#select方法:
@votes = project.votes.all
# ... other code ...
current_user_votes = @votes.select{ |v| v.user_id == current_user.id }
这将返回项目所有用户投票的数组。如果用户只允许一次投票,并且您想要一个值而不是数组,那么只需使用.first
,如下所示:
@votes = project.votes.all
# ... other code ...
current_user_vote = @votes.select{ |v| v.user_id == current_user.id }.first