Add unique index to enterprise permalink

This commit is contained in:
Maikel Linke
2015-06-03 11:57:22 +10:00
parent cb2adea59f
commit 96177b7cd7
2 changed files with 18 additions and 1 deletions

View File

@@ -0,0 +1,16 @@
class AddUniqueIndexToEnterprisePermalink < ActiveRecord::Migration
def change
duplicates = Enterprise.group(:permalink).having('count(*) > 1').pluck(:permalink)
duplicates.each { |p| resolve_permalink(p) };
add_index :enterprises, :permalink, :unique => true
end
def resolve_permalink(permalink)
conflicting = Enterprise.where(permalink: permalink)
while conflicting.size > 1 do
enterprise = conflicting.pop
enterprise.permalink = nil
enterprise.save
end
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20150527004427) do
ActiveRecord::Schema.define(:version => 20150603001843) do
create_table "adjustment_metadata", :force => true do |t|
t.integer "adjustment_id"
@@ -323,6 +323,7 @@ ActiveRecord::Schema.define(:version => 20150527004427) do
add_index "enterprises", ["confirmation_token"], :name => "index_enterprises_on_confirmation_token", :unique => true
add_index "enterprises", ["is_primary_producer", "sells"], :name => "index_enterprises_on_is_primary_producer_and_sells"
add_index "enterprises", ["owner_id"], :name => "index_enterprises_on_owner_id"
add_index "enterprises", ["permalink"], :name => "index_enterprises_on_permalink", :unique => true
add_index "enterprises", ["sells"], :name => "index_enterprises_on_sells"
create_table "exchange_fees", :force => true do |t|