アプリケーションにモデル(エージェントと呼ぶことができます)があり、モデルミッション(1つ以上のエージェントに割り当てられる可能性のあるミッションを表すモデル)と多対多の関係があり、エージェントがミッションを受け入れることができます:
class Agent < ActiveRecord::Base
has_many :assignments
has_many :missions, :through => :assignments
end
class Assignment < ActiveRecord::Base
belongs_to :agent
belongs_to :mission
attr_accessible :accepted
end
class Mission < ActiveRecord::Base
has_many :assignments
has_many :agents, :through => :assignments
end
ここで、次の要件を使用して、すべてのエージェントに一度に割り当てられるミッションを作成できるようにしたいと思います。
- 「グローバル」ミッションはすべてのエージェントに割り当てられていますが、それぞれ個別に受け入れることができます
- 「グローバル」ミッションは、グローバルミッションの作成後に作成されたエージェントにも適用されます。
- 新しいエージェントが作成されるたびに(すべてのグローバルミッションを割り当てるために)新しい割り当てモデルを作成したくないし、新しいグローバルミッションが作成されるたびに既存のすべてのエージェントに割り当てを作成したくない。
- 特定の(または複数の)エージェントに割り当てられた既存のミッションは、グローバルミッションに簡単に変換できます。
- エージェントが与えられた場合、私は彼のすべての割り当て(グローバルおよび特定)を1回の呼び出しで取得し、可能であれば、配列ではなくリレーションとして取得したいと考えています。
グローバルミッションと非グローバルミッション用に別々のテーブルを作成せずにこの機能を実現するための優れた設計(dbとモデルの両方)は何でしょうか?
ありがとう!
アリエル