我有一个产品型号,带有类别列。用户可以在同一字段中保存多个逗号分隔值。通过rake任务更新不同模型中的字段
我刚刚完成重构我的数据库,所以通过创建一个类别表和一个categories_products连接。
如何使用类别更新我的类别模型,同时还使用相应的category_id和product_id更新连接表。
这是我迄今在耙子任务中所具有的功能,它基本上只是将产品表中的类别分开。
我有一个产品型号,带有类别列。用户可以在同一字段中保存多个逗号分隔值。通过rake任务更新不同模型中的字段
我刚刚完成重构我的数据库,所以通过创建一个类别表和一个categories_products连接。
如何使用类别更新我的类别模型,同时还使用相应的category_id和product_id更新连接表。
这是我迄今在耙子任务中所具有的功能,它基本上只是将产品表中的类别分开。
这是一个良好的开端。假设你使用的是HABTM关联,并且有上的字category
没有碰撞(即新表是像猫):
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
分组内,并具有写入的反函数。
也许是这样的:
Product.find(:all).each do |k|
k.categories.split(",").each do |w|
Category.create(:description => w, :product_id => k.id)
end
end
根据你的回应,我最终这样做了:'def self.add_kcsid Product.find(:all).each do | k | k.category_names.split(“,”)。each do | w | (:cat_name => w.strip.to_s) end end end' – Yogzzz 2012-08-08 21:59:06