迭代任务模型,计算用户,...然后删除任何多次存在的用户

时间:2012-09-21 15:35:48

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

我需要评估一个user_id是否在数组中存在多次。最终,我需要确定用户是否能够在一次尝试中完成任务(每个任务都保存为记录)。我需要显示一定比例的成功,这最终取决于第一次尝试正确使用的用户数量。我在任务模型':passed'中添加了一个布尔值,但是我必须编写更多逻辑来为第一条记录设置该布尔值,然后在创建任何后续记录时取消设置它。闻起来。我现在的方法是简单地创建一个task.users数组,然后确定该数组中是否存在多次user_id ......如果它确实从数组中删除了该整数的所有实例(以便它们不被计算) 。我正在绊倒自己的思维过程而没有成功......

如何迭代所有任务并计算每个迭代的user_id和.delete(user_id)计数的任何用户> 1?

1 个答案:

答案 0 :(得分:1)

不明白你在问什么,但是这会给你一个user_id的数组,它们完成了没有重复的任务:

task.users.map(&:user_id).uniq

根据您的评论,您可以尝试:

task.users.group_by{ |u| u.user_id }.collect{ |u, dups| u if dups.size == 1 }.compact