diff --git a/app/models/user.rb b/app/models/user.rb index f080d70..ac2c8aa 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -53,11 +53,11 @@ class User < ApplicationRecord has_secure_password ##### Enums - # Enum for collection privacy levels + # Enum for collection privacy levels (1-based to avoid JavaScript falsy 0 issues) enum :collection_privacy, { - everyone: 0, - crew_only: 1, - private_collection: 2 + everyone: 1, + crew_only: 2, + private_collection: 3 }, prefix: true ##### Instance Methods diff --git a/db/migrate/20251214091117_change_collection_privacy_to_one_based.rb b/db/migrate/20251214091117_change_collection_privacy_to_one_based.rb new file mode 100644 index 0000000..b81c6d0 --- /dev/null +++ b/db/migrate/20251214091117_change_collection_privacy_to_one_based.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ChangeCollectionPrivacyToOneBased < ActiveRecord::Migration[8.0] + def up + # Shift all values up by 1: 0->1, 1->2, 2->3 + execute 'UPDATE users SET collection_privacy = collection_privacy + 1' + + # Change default from 0 to 1 + change_column_default :users, :collection_privacy, from: 0, to: 1 + end + + def down + # Shift all values down by 1: 1->0, 2->1, 3->2 + execute 'UPDATE users SET collection_privacy = collection_privacy - 1' + + # Restore default + change_column_default :users, :collection_privacy, from: 1, to: 0 + end +end