0

我有一个产品模型,有一个类别列。用户能够在同一字段中保存多个逗号分隔值。

我刚刚完成了对数据库的重构,因此通过创建一个类别表和一个 category_products 连接。

如何使用类别更新我的类别模型,同时使用相应的 category_id 和 product_id 更新连接表。

到目前为止,这是我在 rake 任务中所做的,基本上只是将类别与产品表分开。

Product.find(:all).each do |k|
  k.categories.split(",").each do |w|
    puts k.id + " " + w
  end
end
4

2 回答 2

0

也许是这样的:

Product.find(:all).each do |k|
  k.categories.split(",").each do |w|
    Category.create(:description => w, :product_id => k.id)
  end
end
于 2012-08-08T17:48:53.140 回答
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/downchange分组内,并编写一个反函数。

于 2012-08-08T17:53:32.253 回答