User、Task、および UserTask の 3 つのテーブルがあります (外部キーとして User と Task があり、他の列はありません)。UserTask テーブルのエントリは、特定の User/Task の組み合わせに対して存在する場合と存在しない場合があります (UserTask レコードは、スケーラビリティ上の理由から必要に応じて作成されます)。
私の見解では、現在ログインしているユーザーのすべてのタスクを表示したいと思います。UserTask テーブルに対応するレコードが存在する場合、タスクごとに「yes」というテキストを表示したいと考えています。それ以外の場合は、「いいえ」と表示します。しかし、コントローラーからビューに渡すオブジェクトと、ビューに渡されたオブジェクトとの対話方法 (つまり、何ができるか) が少しわかりません。
User、Tasks、および UserTasks をコントローラーからビューに個別の変数として渡す必要がありますか? このように、Tasks 変数を反復処理するだけですべての Task を表示できますwhere
。各 Task について、ビューで (ActiveRecord クエリ) を使用して、各 Task に UserTask があるかどうかを判断できます。問題は、ビューに渡されたオブジェクトに対してクエリを実行しwhere
ても大丈夫ですか? find
ビューに渡されたオブジェクトの反復など、コントローラーに任せて、ビューで単純なことだけを行うと常に想定していました(間違っている場合は修正してください)。
または、各キーがタスクで、各値が UserTask であるコントローラーでハッシュを作成し、そのハッシュをビューに渡す必要がありますか? このようにして、すべてのキーを反復処理するだけですべてのタスクをビューに表示できます。各タスク キーについて、値が null かどうかをチェックして「はい」または「いいえ」を表示できます。
それとも別の方法がありますか (つまり、テーブルを結合するか何か...どのように機能するかわかりません)?