我的應用程序中有一個模型(我們可以稱之爲代理),它與模型任務(代表可以分配給一個或多個代理的任務的模型)具有多對多關係 任務可以接受由代理人:如何創建具有全局和特定作業的關係?
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
現在我希望能夠創建一個分配給所有代理商同時符合下列要求的任務:
- 「全球性」的任務被分配給各代理商,但可以單獨接受
- 「全球」特派團也適用於全球特派團創建後創建的特工。
- 我不想在每次創建新代理時創建新的分配模型(爲了將其分配給所有全球任務),並且我不想爲每次新的全球任務創建所有現有代理的分配被建造。
- 分配給特定(或多個)代理商的現有任務可輕鬆轉換爲全球任務。
- 給定一個代理,我希望得到他的全部任務(全局和專用)在一個單一的呼叫,如果可能的話,作爲一個關係,而不是一個數組
這將是一個不錯的設計(包括數據庫和模型)來實現此功能,而無需爲全球和非全球任務創建單獨的表格?
謝謝!
Ariel
這是相當複雜的(實際上是我目前的解決方案,對不起,我沒有提到它)。這意味着我無法通過任何關係獲得我所有的任務(任務只有全球任務被接受,但它將具有所有特定的任務)。此外,執行agent1.assignments或agent1.missions將返回不一致的結果(對於非全局但是被全球化的任務以及被接受的全球任務) – Sakin 2013-03-19 22:14:43
您必須修改查詢以包含全局未分配任務。我會更新我的答案。 – awbergs 2013-03-19 22:16:17