我有User
和Project
模型。一個用戶可以有多個項目,而一個項目可以有多個用戶。這當然很簡單,has_and_belongs_to_many
關聯。我的問題是我也想跟蹤創建項目的用戶。對於我的Project
模型,這將很簡單,belongs_to :user
。然後問題是,當用戶與Project
已經有HABTM關係時,爲User
做一個has_many :projects
沒什麼意義。Rails HABTM和belongs_to用於關聯用戶/項目
下面是我最終想實現:
# building a project with the currently logged in user
current_user.projects.build(...)
# now when a user wants to add another user to this project
project = current_user.projects.find(...)
project.users << User.find(...)
# grabbing information
some_project.user #=> The user who created this project
some_project.users #=> The array of User objects associated
some_user.projects #=> The array of Project objects associated
在將來很可能一個User
將具有相同的排序關係與Group
,其中User
會都有很多和屬於多個組。但是我也想跟蹤Group
的創建者。
這很可能是我錯過了一些東西。實現這一目標的常用方法是什麼?
如果它有助於澄清,可能的配置佈局如下:
- 集團
- has_and_belongs_to_many:用戶
- belongs_to的:用戶
- 的has_many:項目
- 只有
User
應該有能力創建一個Group
- 用戶
- has_and_belongs_to_many:組
- 的has_many:項目
- 能極大的一組或一個項目,也可以同時屬於
- 項目
- has_and_belongs_to_many:用戶
- belongs_to:group
- 既是
User
和Group
應該創建一個Project
的能力,我也嘗試做每個關聯簡單has_and_belongs_to_many
和包括creator_id
例如,這種跟蹤自己。例如.. Project.create(:creator_id => current_user.id)
但這看起來很駭人,我確信他們會是一個更好的方式來做到這一點。如果我錯過了一些簡單的東西,對我的無知抱歉。
嗨馬克,謝謝你的回答。我認爲你對我所需要的是正確的,我正在尋找更多的具體答案,因爲我對這三種模型之間的關係有點困惑,瑞恩使用2,他們的關係有點不同。我今天會給它看看是否有其他人回答。再次感謝 –
看看我的編輯。對不起,但我想我以前在你瀏覽你的問題時,已經把你引向了錯誤的道路。如果你什麼都不懂,請告訴我。多態性可能需要一些解釋,所以有一個railscast它http://railscasts.com/episodes/154-polymorphic-association – mark
啊,謝謝馬克,這就是我一直在尋找! –