I have a products model, with a categories column. Users were able to save multiple comma separated values in the same field.
I just finished refactoring my DB so by creating a categories table, and a categories_products join.
How can I updated my categories model with the categories while also updating the join table with the corresponding category_id and product_id.
This is what I have in a rake task so far, which basically just separated the categories from the products table.
Product.find(:all).each do |k|
k.categories.split(",").each do |w|
puts k.id + " " + w
end
end
This is a good start. Assuming you are using a HABTM association and that there is no collision on the word
category(ie. your new table is something like Cats):Also, because this is a one-time operation, rather than a task that will be executed many time, this is probably a better candidate for a DB migration. That means it needs to inside an
up/downorchangegrouping, and be have an inverse function written.