From fa41f6dc40306d2b9be4609a7887ff7e0789d7f6 Mon Sep 17 00:00:00 2001 From: Rafael Schouten Date: Wed, 1 Oct 2014 13:02:03 +1000 Subject: [PATCH] add rollback to migration --- ...140927005043_enterprise_config_refactor.rb | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/db/migrate/20140927005043_enterprise_config_refactor.rb b/db/migrate/20140927005043_enterprise_config_refactor.rb index 95cf7ab7c5..de2bf1d407 100644 --- a/db/migrate/20140927005043_enterprise_config_refactor.rb +++ b/db/migrate/20140927005043_enterprise_config_refactor.rb @@ -12,13 +12,36 @@ class EnterpriseConfigRefactor < ActiveRecord::Migration end def down + # This process is lossy. Producer profiles wont exist. + add_column :enterprises, :type, :string, null: false, default: 'profile' + add_column :enterprises, :is_distributor, :boolean + + Enterprise.all.each do |enterprise| + enterprise.type = type?(enterprise) + enterprise.is_distributor = distributes?(enterprise) + enterprise.save! + end + + remove_column :enterprises, :sells end def sells_what?(enterprise) is_distributor = enterprise.read_attribute(:is_distributor) type = enterprise.read_attribute(:type) return "none" if !is_distributor || type == "profile" - return "own" if type == "single" || enterprise.suppliers == [enterprise] + return "own" if type == "single" return "any" end + + def distributes?(enterprise) + return true if enterprise.read_attribute(:sells) != "none" + return false + end + + def type?(enterprise) + sells = enterprise.read_attribute(:sells) + return "profile" if !enterprise.is_primary_producer and sells == "none" + return "single" if sells == "own" + return "full" + end end