2015-06-18 56 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

相关问题