user upgrades: add upgrade code system.

Add a system for upgrading accounts using upgrade codes. Users purchase
an upgrade code off-site then redeem it on-site to upgrade their account
to Gold. Upgrade codes are randomly pre-generated and are one time use
only. Codes have enough randomness that guessing a code is infeasible.
This commit is contained in:
evazion
2022-05-25 17:28:39 -05:00
parent 7786fbaca6
commit 173e43b192
22 changed files with 461 additions and 22 deletions

View File

@@ -0,0 +1,22 @@
class CreateUpgradeCodes < ActiveRecord::Migration[7.0]
def change
create_table :upgrade_codes do |t|
t.timestamps
t.string :code, null: false
t.integer :status, null: false
t.integer :creator_id, null: false
t.integer :redeemer_id
t.integer :user_upgrade_id
t.index :code, unique: true
t.index :status
t.index :creator_id
t.index :redeemer_id, where: "redeemer_id IS NOT NULL"
t.index :user_upgrade_id, where: "user_upgrade_id IS NOT NULL"
t.foreign_key :users, column: :creator_id
t.foreign_key :users, column: :redeemer_id
t.foreign_key :user_upgrades, column: :user_upgrade_id
end
end
end