Use the friendly ID gem for contest slugs
All checks were successful
CI / scan_ruby (push) Successful in 18s
CI / scan_js (push) Successful in 10s
CI / lint (push) Successful in 11s
CI / test (push) Successful in 33s

This commit is contained in:
sto
2025-03-26 17:40:56 +01:00
parent a5d165c4b3
commit 2144c22bd9
12 changed files with 164 additions and 10 deletions

View File

@@ -0,0 +1,5 @@
class RemoveSlugFromContests < ActiveRecord::Migration[8.0]
def change
remove_column :contests, :slug, :string
end
end

View File

@@ -0,0 +1,6 @@
class AddSlugToContests < ActiveRecord::Migration[8.0]
def change
add_column :contests, :slug, :string
add_index :contests, :slug, unique: true
end
end

View File

@@ -0,0 +1,21 @@
MIGRATION_CLASS =
if ActiveRecord::VERSION::MAJOR >= 5
ActiveRecord::Migration["#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}"]
else
ActiveRecord::Migration
end
class CreateFriendlyIdSlugs < MIGRATION_CLASS
def change
create_table :friendly_id_slugs do |t|
t.string :slug, null: false
t.integer :sluggable_id, null: false
t.string :sluggable_type, limit: 50
t.string :scope
t.datetime :created_at
end
add_index :friendly_id_slugs, [ :sluggable_type, :sluggable_id ]
add_index :friendly_id_slugs, [ :slug, :sluggable_type ], length: { slug: 140, sluggable_type: 50 }
add_index :friendly_id_slugs, [ :slug, :sluggable_type, :scope ], length: { slug: 70, sluggable_type: 50, scope: 70 }, unique: true
end
end