1

多くのタスクを持つユーザーがいます。これは、定義済みの一連のタスクです。各タスクには、タスクを完了するために完了する必要がある要件のリストがあります。has_many through私は2つの関係を設定しました。これが私のコードです。

class User < ActiveRecord::Base
  has_many :user_tasks
  has_many :tasks, through: :user_tasks
end

class UserTask < ActiveRecord::Base
  belongs_to :user
  belongs_to :task
end

class Task < ActiveRecord::Base
  has_many :user_tasks
  has_many :users, through: :user_tasks
  has_many :task_requirements
  has_many :requirements, through: :task_requirements
end

class TaskRequirement < ActiveRecord::Base
  belongs_to :task
  belongs_to :requirement
end

class Requirement < ActiveRecord::Base
  has_many :task_requirements
  has_many :requirements, through: :tasks
end

この部分はかなり単純に思えますが、ここで、各要件が完了した日付と、各要件が完了したかどうかのブール値を取得したいと考えていますUser。私はもともとそれをテーブルに入れようとしましたTaskRequirementが、もちろん、すべてのユーザーに対して更新されました。これは私が望む動作ではありません. だから私は2つの質問があります。1. これらのフィールドはどこに置くのですか? 2. それらにアクセスする最良の方法は何ですか?

それらは結合テーブルに入ると思いますが、結合テーブルの情報に簡単にアクセスする方法はありません。

すべての助けをありがとう。

4

1 に答える 1

0

他のユーザーがタスクを完了したかどうかに関係なく、各ユーザーがタスク要件を完了する場合、関連付けられたデータ項目 (ブール値と完了日) を格納する UserRequirement テーブルが必要です。

ただし、各要件を各ユーザーが複数回 (関連付けられているタスクごとに 1 回) 完了する必要がある場合は、User と TaskRequirement、または UserTask と Requirement、または User と Task と Requirement の間の結合が必要になります。

于 2013-07-25T21:47:33.177 に答える