From 0da5f8101e6b6071d30038bcc6b202276973cb8e Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Thu, 12 Jun 2025 12:54:22 -0400 Subject: [PATCH] User belongs to Signal::User --- app/models/user.rb | 2 +- app/models/user/signal_user.rb | 7 +++++ ...50612163028_add_signal_user_id_to_users.rb | 6 ++++ db/schema.rb | 4 ++- db/schema_cache.yml | 28 ++++++++++++++++++- test/fixtures/users.yml | 3 ++ test/models/user/signal_user_test.rb | 12 ++++++++ 7 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 app/models/user/signal_user.rb create mode 100644 db/migrate/20250612163028_add_signal_user_id_to_users.rb create mode 100644 test/models/user/signal_user_test.rb diff --git a/app/models/user.rb b/app/models/user.rb index 23b2f1cb2..5e295c4dd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,5 +1,5 @@ class User < ApplicationRecord - include Accessor, ActionText::Attachable, Assignee, Mentionable, Named, Role, Transferable + include Accessor, ActionText::Attachable, Assignee, Mentionable, Named, Role, SignalUser, Transferable include Timelined # Depends on Accessor has_one_attached :avatar diff --git a/app/models/user/signal_user.rb b/app/models/user/signal_user.rb new file mode 100644 index 000000000..16bee49bc --- /dev/null +++ b/app/models/user/signal_user.rb @@ -0,0 +1,7 @@ +module User::SignalUser + extend ActiveSupport::Concern + + included do + belongs_to :signal_user, dependent: :destroy, class_name: "SignalId::User", optional: true + end +end diff --git a/db/migrate/20250612163028_add_signal_user_id_to_users.rb b/db/migrate/20250612163028_add_signal_user_id_to_users.rb new file mode 100644 index 000000000..5caddaea9 --- /dev/null +++ b/db/migrate/20250612163028_add_signal_user_id_to_users.rb @@ -0,0 +1,6 @@ +class AddSignalUserIdToUsers < ActiveRecord::Migration[8.1] + def change + add_column :users, :signal_user_id, :integer + add_index :users, :signal_user_id, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 28b66be58..0c7504173 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.1].define(version: 2025_06_11_203906) do +ActiveRecord::Schema[8.1].define(version: 2025_06_12_163028) do create_table "accesses", force: :cascade do |t| t.integer "collection_id", null: false t.datetime "created_at", null: false @@ -336,9 +336,11 @@ ActiveRecord::Schema[8.1].define(version: 2025_06_11_203906) do t.string "name", null: false t.string "password_digest" t.string "role", default: "member", null: false + t.integer "signal_user_id" t.datetime "updated_at", null: false t.index ["email_address"], name: "index_users_on_email_address", unique: true t.index ["role"], name: "index_users_on_role" + t.index ["signal_user_id"], name: "index_users_on_signal_user_id", unique: true end create_table "watches", force: :cascade do |t| diff --git a/db/schema_cache.yml b/db/schema_cache.yml index 751801e34..2c6a24735 100644 --- a/db/schema_cache.yml +++ b/db/schema_cache.yml @@ -993,6 +993,16 @@ columns: default_function: collation: comment: + - !ruby/object:ActiveRecord::ConnectionAdapters::SQLite3::Column + auto_increment: + name: signal_user_id + cast_type: *1 + sql_type_metadata: *2 + 'null': true + default: + default_function: + collation: + comment: - *9 watches: - *22 @@ -2276,6 +2286,22 @@ indexes: nulls_not_distinct: comment: valid: true + - !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition + table: users + name: index_users_on_signal_user_id + unique: true + columns: + - signal_user_id + lengths: {} + orders: {} + opclasses: {} + where: + type: + using: + include: + nulls_not_distinct: + comment: + valid: true watches: - !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition table: watches @@ -2327,4 +2353,4 @@ indexes: comment: valid: true workflows: [] -version: 20250611203906 +version: 20250612163028 diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index d12c1a4b3..dc13feca0 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -5,18 +5,21 @@ david: email_address: david@37signals.com password_digest: <%= digest %> role: member + signal_user: 37s_fizzy_david jz: name: JZ email_address: jz@37signals.com password_digest: <%= digest %> role: member + signal_user: 37s_fizzy_jz kevin: name: Kevin email_address: kevin@37signals.com password_digest: <%= digest %> role: admin + signal_user: 37s_fizzy_kevin system: name: System diff --git a/test/models/user/signal_user_test.rb b/test/models/user/signal_user_test.rb new file mode 100644 index 000000000..81071517b --- /dev/null +++ b/test/models/user/signal_user_test.rb @@ -0,0 +1,12 @@ +require "test_helper" + +class User::SignalUserTest < ActiveSupport::TestCase + setup do + @user = users(:david) + end + + test "belongs to a Signal::User" do + assert_not_nil @user.signal_user_id + assert_equal signal_users("37s_fizzy_david"), @user.signal_user + end +end