Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.17 KB | None | 0 0
  1. class AddDesignerToProducts < ActiveRecord::Migration[5.0]
  2.   class Product < ActiveRecord::Base
  3.   end
  4.  
  5.   def self.up
  6.     rename_column :products, :designer, :designer_name
  7.     add_reference :products, :designer, foreign_key: true
  8.  
  9.     Product.reset_column_information
  10.     Product.find_each do |product|
  11.       designer_names = product.designer_name.split(' ')
  12.       first_name = designer_names[0]
  13.       last_name = designer_names[1]
  14.  
  15.       last_name = "#{last_name} #{designer_names[2]}" if designer_names[2]
  16.  
  17.       selected_designer = Designer.find_by(first_name: first_name, last_name: last_name)
  18.       selected_designer ? product.update(designer_id: selected_designer.id) : nil
  19.     end
  20.  
  21.     remove_column :products, :designer_name, :string
  22.   end
  23.  
  24.   def self.down
  25.     add_column :products, :designer_name, :string
  26.  
  27.     Product.reset_column_information
  28.     Product.find_each do |product|
  29.       binding.pry
  30.       designer_name = Designer.find(product.designer_id)&.full_name
  31.       product.update(designer_name: designer_name)
  32.     end
  33.  
  34.     remove_reference :products, :designer, foreign_key: true
  35.     rename_column :products, :designer_name, :designer
  36.   end
  37. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement