Skip to content

Commit

Permalink
Added tag_id to field_groups and fix some bugs in the super_tags migr…
Browse files Browse the repository at this point in the history
…ation
  • Loading branch information
Ben Tillman committed Nov 16, 2011
1 parent 7789842 commit 0a83f9c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 22 deletions.
9 changes: 9 additions & 0 deletions db/migrate/20111116091952_add_field_groups_tag_id.rb
@@ -0,0 +1,9 @@
class AddFieldGroupsTagId < ActiveRecord::Migration
def self.up
add_column :field_groups, :tag_id, :integer
end

def self.down
remove_column :field_groups, :tag_id
end
end
44 changes: 22 additions & 22 deletions lib/tasks/super_tags.rake
Expand Up @@ -3,8 +3,7 @@ namespace :super_tags do
desc "Migrate super_tags plugin to core custom_fields"
task :migrate => :environment do
def dryrun?
true
#~ ENV['DRYRUN'] == 'true'
ENV['DRYRUN'] == 'true'
end

connection = ActiveRecord::Base.connection
Expand All @@ -18,11 +17,11 @@ namespace :super_tags do
tag_ids = field_data.map {|row| row['tag_id']}.uniq
tag_ids.each do |tag_id|
tag = ActsAsTaggableOn::Tag.find(tag_id)
group_params = {:tag_id => tag.id, :name => tag.name}
group_params = {:tag_id => tag.id, :name => tag.name + ' Details'}
if dryrun?
puts group_params
else
group = CustomFieldGroup.create group_params
group = FieldGroup.create group_params
group_ids[tag_id] = group.id
end
end
Expand Down Expand Up @@ -51,26 +50,27 @@ namespace :super_tags do
end

tag_ids.each do |tag_id|
data = connection.select_all "SELECT * FROM tag#{tag_id}s"
keys = data.first.keys.reject {|k| %w(id customizable_type).include?(k)}
if (data = connection.select_all "SELECT * FROM tag#{tag_id}s").present?
keys = data.first.keys.reject {|k| %w(id customizable_type).include?(k)}

klass_names = data.map {|row| row['customizable_type']}.uniq
klass_names.each do |klass_name|
klass = klass_name.constantize
values = data.map do |row|
keys.map {|k| row[k] =~ /^\d$/ ? row[k] : "'#{row[k]}'"}.join(', ')
end
keys.shift # We don't need customizable_id anymore
klass_names = data.map {|row| row['customizable_type']}.uniq
klass_names.each do |klass_name|
klass = klass_name.constantize
values = data.map do |row|
keys.map {|k| row[k] =~ /^\d*$/ ? row[k] : "'#{row[k].gsub("'","''")}'"}.join(', ')
end
keys.shift # We don't need customizable_id anymore

insert = %Q{
INSERT INTO #{klass.table_name} (#{([klass.primary_key] + keys).join(', ')})
VALUES (#{values.join('), (')})
ON DUPLICATE KEY UPDATE #{keys.map {|k| "#{k} = VALUES(#{k})"}.join(', ')}
}
if dryrun?
puts insert
else
connection.execute insert
insert = %Q{
INSERT INTO #{klass.table_name} (#{([klass.primary_key] + keys).join(', ')})
VALUES (#{values.join('), (')})
ON DUPLICATE KEY UPDATE #{keys.map {|k| "#{k} = VALUES(#{k})"}.join(', ')}
}
if dryrun?
puts insert
else
connection.execute insert
end
end
end
end
Expand Down

0 comments on commit 0a83f9c

Please sign in to comment.