Use the friendly ID gem for contest slugs
This commit is contained in:
5
db/migrate/20250326162646_remove_slug_from_contests.rb
Normal file
5
db/migrate/20250326162646_remove_slug_from_contests.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class RemoveSlugFromContests < ActiveRecord::Migration[8.0]
|
||||
def change
|
||||
remove_column :contests, :slug, :string
|
||||
end
|
||||
end
|
6
db/migrate/20250326162828_add_slug_to_contests.rb
Normal file
6
db/migrate/20250326162828_add_slug_to_contests.rb
Normal 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
|
21
db/migrate/20250326162920_create_friendly_id_slugs.rb
Normal file
21
db/migrate/20250326162920_create_friendly_id_slugs.rb
Normal 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
|
14
db/schema.rb
generated
14
db/schema.rb
generated
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[8.0].define(version: 2025_03_26_153736) do
|
||||
ActiveRecord::Schema[8.0].define(version: 2025_03_26_162920) do
|
||||
create_table "active_storage_attachments", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "record_type", null: false
|
||||
@@ -71,9 +71,21 @@ ActiveRecord::Schema[8.0].define(version: 2025_03_26_153736) do
|
||||
t.boolean "team", default: false
|
||||
t.boolean "allow_registration", default: false
|
||||
t.string "slug"
|
||||
t.index ["slug"], name: "index_contests_on_slug", unique: true
|
||||
t.index ["user_id"], name: "index_contests_on_user_id"
|
||||
end
|
||||
|
||||
create_table "friendly_id_slugs", force: :cascade 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"
|
||||
t.index ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true
|
||||
t.index ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type"
|
||||
t.index ["sluggable_type", "sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_type_and_sluggable_id"
|
||||
end
|
||||
|
||||
create_table "puzzles", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.datetime "created_at", null: false
|
||||
|
Reference in New Issue
Block a user