모델 미션 (하나 이상의 상담원에게 할당 될 수있는 임무를 나타내는 모델)과 다 대다 관계가있는 모델을 내 애플리케이션 (에이전트라고 부를 수 있음)에 보유하고 있습니다. 임무를 수락 할 수 있습니다.글로벌 할당과 특정 할당을 모두 갖는 관계는 어떻게 만듭니 까?
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
지금 나는 다음과 같은 요구 사항을 한 번에 모든 에이전트에 할당 된 임무를 만들 수 있도록하려면 : 에이전트에 의해
- A "글로벌"의 임무는 모든 에이전트에 할당됩니다, 각 개별적으로 받아 들일 수 있음
- "global" 임무는 글로벌 임무를 만든 후에 만들어진 에이전트에도 적용됩니다.
- 새로운 에이전트가 생성 될 때마다 (모든 글로벌 임무를 할당하기 위해) 새 할당 모델을 생성하고 싶지 않고 새로운 글로벌 임무가있을 때마다 기존 에이전트에 대한 할당을 만들고 싶지 않습니다. 만들어집니다.
- 특정 (또는 여러 개의) 에이전트에 할당 된 기존 임무는 글로벌 임무로 쉽게 전환 될 수 있습니다. 에이전트 감안할 때
- , 나는, (글로벌 및 특정) 단일 통화에서 가능하다면 그의 모든 과제를 얻으려면 관계가 아닌 배열로
(좋은 디자인이 될 것입니다 무엇 모두 DB 및 모델) 글로벌 및 비전업 임무를위한 별도의 테이블을 만들지 않고도이 기능을 구현할 수 있습니까?
감사합니다.
아리엘은
이것은 매우 복잡합니다 (사실은 현재의 해결책입니다. 미안하지만, 제가 언급하지 않았습니다). 모든 관계를 통해 모든 임무를 수행 할 수 없다는 것을 의미합니다 (과제는 받아 들여지는 글로벌 임무 만 갖지만 특정 임무를 모두 갖게됩니다). 또한 agent1.assignments 또는 agent1.missions를 수행하면 일치하지 않는 결과가 반환됩니다 (전역이 아니지만 글로벌로 작성된 임무 및 허용 된 글로벌 임무의 경우) – Sakin
전역 할당되지 않은 임무를 포함하도록 쿼리를 수정해야합니다 선교. 나는 나의 대답을 업데이트 할 것이다. – awbergs