我有一个产品型号,带有类别列。用户可以在同一个字段中保存多个逗号分隔值。
我刚刚完成了对数据库的重构,因此创建了一个类别表和一个categories_products连接。
如何使用类别更新我的类别模型,同时还使用相应的category_id和product_id更新连接表。
这是我到目前为止在rake任务中所拥有的,它基本上只是将类别与products表分开。
Product.find(:all).each do |k|
k.categories.split(",").each do |w|
puts k.id + " " + w
end
end
答案 0 :(得分:0)
也许是这样的:
Product.find(:all).each do |k|
k.categories.split(",").each do |w|
Category.create(:description => w, :product_id => k.id)
end
end
答案 1 :(得分:0)
这是一个好的开始。假设您正在使用HABTM关联并且单词category
上没有冲突(即您的新表类似于Cats):
Product.find(:all).each do |product|
product.categories.split(",").each do |category|
if Cats.exists?(name: category)
product.cats.create(name: category)
else
product.cats << Cats.find_by_name(category)
end
end
end
此外,由于这是一次性操作,而不是将要执行多次的任务,因此这可能是数据库迁移的更好选择。这意味着它需要在up/down
或change
分组中,并且具有反函数。