From 513f8c6a66c6b88ef696b775f0c516a779a34ea0 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Sun, 14 Dec 2025 01:23:42 -0800 Subject: [PATCH] use 1-based values for collection_privacy enum --- app/models/user.rb | 8 ++++---- ..._change_collection_privacy_to_one_based.rb | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20251214091117_change_collection_privacy_to_one_based.rb 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