Ruby on rails 将数据从一对多迁移到HABTM关系

Ruby on rails 将数据从一对多迁移到HABTM关系,ruby-on-rails,ruby-on-rails-3,has-and-belongs-to-many,rails-migrations,Ruby On Rails,Ruby On Rails 3,Has And Belongs To Many,Rails Migrations,我是rails新手,正在更新一个简单的rails应用程序。它当前在:类别到:库之间具有一对多关系。我将这两个模型都更改为HABTM关系,并创建了联接表迁移 Category.all.each do |cat| gallery = Gallery.find(cat.gallery_id) cat.galleries << gallery cat.save end 是否有一种方法可以设置迁移,以便将以前存储在category表中的库ID移动到join表中?您可以在向上迁移中执行类

我是rails新手,正在更新一个简单的rails应用程序。它当前在:类别到:库之间具有一对多关系。我将这两个模型都更改为HABTM关系,并创建了联接表迁移

Category.all.each do |cat|
 gallery = Gallery.find(cat.gallery_id)
 cat.galleries << gallery
 cat.save
end

是否有一种方法可以设置迁移,以便将以前存储在category表中的库ID移动到join表中?

您可以在向上迁移中执行类似操作

Category.all.each do |cat|
 gallery = Gallery.find(cat.gallery_id)
 cat.galleries << gallery
 cat.save
end
Category.all.each do| cat|
gallery=gallery.find(类别gallery\u id)

不管怎样,你可以解释一下它到底是做什么的(对不起,我是ruby和rails的新手)当然,它会遍历每一个类别。然后,它将从与每个类别关联的库id中找到库(这用于一对多关系)。然后,它会将库添加到一个数组中,即库数组。Rails将在幕后为habtm关联创建必要的SQL。在某些情况下,您可能需要处理gallery_id是否为零,但在这种情况下,请不要更新数组。添加了一个条件来测试id是否为空,这一切都非常有效。谢谢!!