0

user_id が配列内に複数存在するかどうかを評価する必要があります。最終的に、ユーザーが 1 回の試行でタスク (各タスクはレコードとして保存されます) を完了できたかどうかを判断する必要があります。成功のパーセンテージを表示する必要があります。これは最終的に、最初の試行で正解したユーザーの数によって決まります。タスク モデル ':passed' にブール値を追加しましたが、最初のレコードにそのブール値を設定し、後続のレコードが作成された場合は設定を解除するロジックをさらに記述する必要があります。においがする。私のアプローチは、単純に task.users の配列を作成し、その配列に user_id が複数回存在するかどうかを判断することです...そして、配列からその整数のすべてのインスタンスを削除するかどうか (それらがカウントされないように) . 私は自分の思考プロセスにつまずいていて、成功していません...

すべてのタスクを反復処理し、カウントが > 1 であるユーザーの各反復 user_id および .delete(user_id) をカウントするにはどうすればよいですか?

4

1 に答える 1

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
于 2012-09-21T16:09:30.233 に答える