0
所以我正在一個rails 4應用程序,我有兩個模型的開發人員和應用程序。Rails關係表
基本上我想有一個開發者作爲一個創始人,有多個應用程序以及這些應用程序屬於開發者(創始人)。然後我想要和應用程序有許多合作者和合作者屬於許多應用程序。繼承人我的代碼,是這樣嗎?我會怎麼說添加一個協作者到應用程序?
應用
has_and_belongs_to_many :collaborators, class_name: 'Developer', foreign_key: :collaborator_id
has_and_belongs_to_many :founders, class_name: 'Developer', foreign_key: :founder_id
開發
has_and_belongs_to_many :apps, foreign_key: :collaborator_id
has_and_belongs_to_many :apps, foreign_key: :founder_id
關係表
def change
create_table :apps_developers, id: false do |t|
t.references :founder, references: 'Developer'
t.references :collaborator, references: 'Developer'
t.references :app
t.boolean :collaborator_pending, default: :true
end
add_index :apps_developers, [:founder_id, :app_id], unique: true
add_index :apps_developers, [:collaborator_id, :app_id, :collaborator_pending], unique: true, name: 'index_apps_collaborators'
end
如果可能有不止一個創始人,如共同創始人,這是否可行? – ny95
不可以。但是,你沒有在你的問題中提到這個要求。如果您需要聯合創始人,那麼您在應用程序和創始人之間使用HABTM是正確的。有一件事是肯定的,合作者絕對是HABTM。 – depa
你可以做的另一件事是爲我的答案添加第二個聯合創始人協會。一個應用程序將'belongs_to:co_founder,:class_name =>'Developer''和一個開發者'has_many:apps,:foreign_key =>:co_founder_id'。這樣你就可以使用兩個不同的外鍵,你就可以編寫'app.founder'和'app.co_founder'。 – depa