1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 05:09:38 +02:00

Fix duplicate invites (#1437)
Some checks are pending
Publish Docker image / ci (push) Waiting to run
Publish Docker image / Build docker image (push) Blocked by required conditions

Co-authored-by: Josh Pigford <josh@joshpigford.com>
This commit is contained in:
Tony Vincent 2024-11-08 16:58:35 +01:00 committed by GitHub
parent a113d573d6
commit b3ef995d1f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 1 deletions

View file

@ -5,6 +5,7 @@ class Invitation < ApplicationRecord
validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP } validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP }
validates :role, presence: true, inclusion: { in: %w[admin member] } validates :role, presence: true, inclusion: { in: %w[admin member] }
validates :token, presence: true, uniqueness: true validates :token, presence: true, uniqueness: true
validates_uniqueness_of :email, scope: :family_id, message: "has already been invited to this family"
validate :inviter_is_admin validate :inviter_is_admin
before_validation :generate_token, on: :create before_validation :generate_token, on: :create

View file

@ -0,0 +1,5 @@
class AddUniqueEmailIndexToInvitations < ActiveRecord::Migration[7.2]
def change
add_index :invitations, [ :email, :family_id ], unique: true
end
end

3
db/schema.rb generated
View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2024_10_30_222235) do ActiveRecord::Schema[7.2].define(version: 2024_11_08_150422) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "pgcrypto" enable_extension "pgcrypto"
enable_extension "plpgsql" enable_extension "plpgsql"
@ -427,6 +427,7 @@ ActiveRecord::Schema[7.2].define(version: 2024_10_30_222235) do
t.datetime "expires_at" t.datetime "expires_at"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.index ["email", "family_id"], name: "index_invitations_on_email_and_family_id", unique: true
t.index ["email"], name: "index_invitations_on_email" t.index ["email"], name: "index_invitations_on_email"
t.index ["family_id"], name: "index_invitations_on_family_id" t.index ["family_id"], name: "index_invitations_on_family_id"
t.index ["inviter_id"], name: "index_invitations_on_inviter_id" t.index ["inviter_id"], name: "index_invitations_on_inviter_id"