我目前正在建設一個Rails應用程序,其中一個用戶可以有很多人這反過來又可以有很多項目。Ruby on Rails:如何建模人員和組織?
這很有效。
現在我的問題是,有些人可能屬於同一組織,而其他人可能根本不屬於任何組織。
從我迄今爲止所瞭解到的情況來看,將所有與組織有關的信息轉移到單獨的表格/模型中將是一件好事。 (如果我錯了,請糾正我)但是如果一個人不屬於任何組織,即私人,那麼會發生什麼? 所有這些如何在Rails中建模?
感謝您的任何幫助。
我目前正在建設一個Rails應用程序,其中一個用戶可以有很多人這反過來又可以有很多項目。Ruby on Rails:如何建模人員和組織?
這很有效。
現在我的問題是,有些人可能屬於同一組織,而其他人可能根本不屬於任何組織。
從我迄今爲止所瞭解到的情況來看,將所有與組織有關的信息轉移到單獨的表格/模型中將是一件好事。 (如果我錯了,請糾正我)但是如果一個人不屬於任何組織,即私人,那麼會發生什麼? 所有這些如何在Rails中建模?
感謝您的任何幫助。
是你的問題就像你有人可能或可能不屬於一個組織。現在你將如何設置它?
現在,如您所說,您將移動組織相關數據在一個單獨的表格中說明organizations
。而您的persons
(或people
?)應包含organization_id
。 如果此人不屬於任何組織,那麼它將僅爲空。模型關係會有點像。
class Person < AR::Base
belongs_to :organization
end
class Organization < AR::Base
has_many :persons #or people?
end
跳過我在這裏User
和Project
模型的關係。請讓我知道,如果我錯過了你的問題的任何部分。
更新:根據您最後的評論
允許列表中的場景:
如果address
是個人和組織重複的唯一的事情的話,最好將它在一個單獨的表addresses
。
組織:has_one :address
人:has_one :address
更新2:
既然事情都有點像條件
person.address
將返回組織地址。person.address
將返回自己的地址。那麼我寧願用下面的方法來保持簡單。在您的Person
模型中添加current_address
(或任何首選名稱)方法。
def current_address
return organization.address if organization
return address
end
通話person.current_address
代替person.address
要經過的決定。
嘗試這可能是它幫助你
class Person < ActiveRecord::Base
belongs_to :organization
end
class Organization < ActiveRecord::Base
has_many :persons
end
如果人所屬組織再組織表PERSON_ID給別人,如果人不屬於組織再組織表爲person_id是零。讓
in your console
-> product = @product.organization
# if person_id given then you get result
# if person_id does not given then get null or blank
謝謝。你基本上和Samiron說的一樣,所以看起來我在這裏是正確的。你會建議另一個表來存儲地址數據嗎?個人和組織都需要一個地址。 – Tintin81
好的,謝謝!這實際上是我到目前爲止所做的。我只是想知道這是否是模擬數據的好方法。我仍然有點擔心這兩張表格中的重複數量。例如。一個人會有一個地址,一個組織也會有一個地址。那麼我會在哪裏存儲這類數據? – Tintin81
它是唯一的地址,還是在人員和組織中有更多的列正在重複? – Samiron
我認爲如果只是地址,那麼最好將它作爲一個可以被個人或組織利用'address_id'獲得的差異資源。更新了我的答案。 – Samiron