2016-12-03 87 views
0

不確定which association最適合我想要的。基本上它是一個待辦事項列表。該列表是一項任務,該任務有許多用戶。複雜導軌協會

即:挖一個洞,種植一些種子。挖一個洞將需要兩個或更多的人。吉姆和喬正在挖這個洞,喬會種下種子。所以要完成兩個列表,第一個由兩個用戶完成,另一個由另一個完成。兩個用戶都可以根據需要完成這兩個列表

  • TODO:有許多名單
  • 列表:屬於待辦事項
  • 列表:擁有衆多用戶
  • 用戶:有許多名單

如果我不是清楚,每個任務(名單)在todo上可以由任何用戶完成。我很難看到在用戶表上放置list_id的位置。這是不可能的,因爲該用戶可以同時做另一個(列表)。我不知道through: :association是如何進場的。

User.first.lists #= [] 
Todo.first.lists.first.users #= [] 

我什麼也沒得到,因爲user_id需要去某個地方。

+1

你有許多一對多的關係..你解決不了,通過在用戶表把LIST_ID你需要創建一個關聯(結)表解決。有關示例,請參閱http://stackoverflow.com/questions/497395/resolve-many-to-many-relationship。 – David

+0

嗨大衛。我也會在那裏看一看。謝謝 – Sylar

回答

2

如果我沒有弄錯,這聽起來像你需要一個連接表。然後通過連接表聲明您的記錄具有關係:

你調用一個連接表:user_lists其中將包含每一個用戶列表,你對這個表創建一個記錄時間的3個數據(ID,USER_ID,LIST_ID)

所以。

然後在你的用戶模型

class User < ActiveRecord::Base 
    has_many :lists, :through => :user_lists 
end 

如果我明白你的設置正確,那麼我希望這會有所幫助,如果不是讓我知道。

您可以在此處詳細瞭解協會http://guides.rubyonrails.org/association_basics.html

+0

這響鈴。我稍後會確認你的答案。謝謝。 – Sylar

+0

那麼'list.rb'中有什麼?任何'has_many'?你也說過「在你的用戶模型中」你有'班級課程......'你的意思是'班級用戶...'? – Sylar

+0

對不起,複製粘貼錯誤:P我會編輯 – Brad