Here I have created many to many association between users and organizations through memberships and It is working fine but What I want is I want the same user(i.e user with same email) to be inserted into the users table if they belongs to different organization.
Here devise is checking the unique email validation in users and did not allow same duplicate users but I want to save it if it belongs to different organization.
Is is a valid approach? Is there any other alternatives solution?
class User < ApplicationRecord
has_many :memberships
has_many :organizations, through: :memberships
end
# app/models/organization.rb
class Organization < ApplicationRecord
has_many :memberships
has_many :users, through: :memberships
end
# app/models/membership.rb
class OrganizationUser < ApplicationRecord
belongs_to :user
belongs_to :organization
end```
# app/db/migrate/20240810134227_devise_create_users.rb
# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[7.1]
def change
create_table :users do |t|
## Database authenticatable
t.string :fullname
t.string :email, null: false, default: ""
# t.integer :organization_id
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
# t.integer :sign_in_count, default: 0, null: false
# t.datetime :current_sign_in_at
# t.datetime :last_sign_in_at
# t.string :current_sign_in_ip
# t.string :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
# add_index :users, :email, unique: true
# add_index :users, [:email, :organization_id], unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end