Rails给定一个来自db的对象数组,有没有办法让数组中的项不必重新创建数据库?

时间:2011-09-19 22:13:28

标签: ruby-on-rails ruby-on-rails-3

假设:

@votes (user_id, option_id)

如果:@project.votes我获得该项目的所有投票。

如果我想查看当前用户投票的内容,我必须这样做:

Votes.where(:user_id => current_user.id).first

这是@project投票查询中已有的记录。有没有办法在第一个查询中找到记录而不必重新编写db?

由于

1 个答案:

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