2013-07-24 80 views
1

我有一個用戶有很多任務。這是一組預定義的任務。每項任務都有一份需要完成的任務需求清單。我已經建立了2 has_many through的關係。這是我的代碼。Rails ActiveRecord has_many問題

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表中,但當然它已經更新了所有用戶,這不是我想要的行爲。所以我有兩個問題。 1.我在哪裏放這些領域? 2.訪問它們的最佳方式是什麼?

我以爲他們會在一個連接表去,但沒有簡單的方法來訪問的連接表中的信息。

再次感謝您的幫助。

+0

根據要求, 「的has_many:要求,通過:任務」 應該大概也是 「的has_many:taskss,通過:task_requirements」。不要忘記你的反向關聯。 –

回答

0

如果每個用戶完成任務的要求獨立的其他用戶是否已經完成了任務,那麼你需要一個UserRequirement表來存儲相關數據項目 - 布爾和完工日期。然而,如果每個用戶必須多次完成每個需求,那麼每個用戶需要與其關聯的每個任務完成一次,那麼您需要在User和TaskRequirement之間或UserTask和Requirement或User和Task之間進行連接和要求。