我有一個產品型號,帶有類別列。用戶可以在同一字段中保存多個逗號分隔值。通過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