diff --git a/app/models/user.rb b/app/models/user.rb index 9d5da73..e5c9835 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,6 +25,7 @@ class User < ApplicationRecord has_many :reports, dependent: :destroy has_many :support_tickets, dependent: :nullify has_many :assigned_support_tickets, class_name: "SupportTicket", foreign_key: :assigned_to_id, dependent: :nullify + has_one :user_onboarding_progress, dependent: :destroy scope :tecnicos, -> { where(role: :tecnico).or(where(can_be_technician: true)) } scope :gestores, -> { where(role: :gestor) } diff --git a/app/models/user_onboarding_progress.rb b/app/models/user_onboarding_progress.rb new file mode 100644 index 0000000..ac4dd8a --- /dev/null +++ b/app/models/user_onboarding_progress.rb @@ -0,0 +1,5 @@ +class UserOnboardingProgress < ApplicationRecord + belongs_to :user + + validates :user_id, presence: true, uniqueness: true +end diff --git a/db/migrate/20260416113000_create_user_onboarding_progresses.rb b/db/migrate/20260416113000_create_user_onboarding_progresses.rb new file mode 100644 index 0000000..78ef55a --- /dev/null +++ b/db/migrate/20260416113000_create_user_onboarding_progresses.rb @@ -0,0 +1,15 @@ +class CreateUserOnboardingProgresses < ActiveRecord::Migration[7.1] + def change + create_table :user_onboarding_progresses, id: :uuid do |t| + t.references :user, null: false, type: :uuid, foreign_key: true, index: { unique: true } + t.jsonb :completed_steps, null: false, default: {} + t.string :last_seen_step + t.datetime :dismissed_at + t.datetime :finished_at + + t.timestamps + end + + add_index :user_onboarding_progresses, :finished_at + end +end