2012-08-08 29 views
0

我有一個產品型號,帶有類別列。用戶可以在同一字段中保存多個逗號分隔值。通過rake任務更新不同模型中的字段

我剛剛完成重構我的數據庫,所以通過創建一個類別表和一個categories_products連接。

如何使用類別更新我的類別模型,同時還使用相應的category_id和product_id更新連接表。

這是我迄今在耙子任務中所具有的功能,它基本上只是將產品表中的類別分開。

回答

0

這是一個良好的開端。假設你使用的是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/downchange分組內,並具有寫入的反函數。

+0

根據你的迴應,我最終這樣做了:'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

0

也許是這樣的:

Product.find(:all).each do |k| 
    k.categories.split(",").each do |w| 
    Category.create(:description => w, :product_id => k.id) 
    end 
end 
相關問題