2015-06-18 55 views
0

我有兩個型號:改變許多-to-many關聯到一個一對多

User

class User < ActiveRecord::Base 
    has_and_belongs_to_many :partners 
end 

Partner

class Partner < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

,現在,我想將其更改爲:

class User < ActiveRecord::Base 
    has_many :partners 
end 

class Partner < ActiveRecord::Base 
    belongs_to :user 
end 

但我怎麼能通過遷移來實現呢?

回答

1

您可以更改模型到:

class User < ActiveRecord::Base 
    has_many :partners 
end 

class Partner < ActiveRecord::Base 
    belongs_to :user 
end 

而且Partner模型應該有一個user_id

如果你不Partner模型有一個user_id列,您可以通過添加:

rails g migration add_user_id_to_partner user_id:integer 

中間表partners_users應該被刪除,因爲它是一個has_many協會。

要刪除表創建一個空的遷移,然後將其添加到遷移文件。

drop_table :partners_users 

然後運行使用rake db:migrate

+0

坦克遷移,但在我的數據庫,我有我的許多一對多關係的'合作伙伴 - users'表,我想也刪除了它。 – Zakaria

+0

只需刪除中間表'users_partners'。沒有更多的事情要做。 – webster

+0

但是當我使用'rake db:migrate'時,'users_partners'回來了! – Zakaria

相關問題