deduplicate users as well

This commit is contained in:
Kiara Grouwstra 2023-01-27 14:39:51 +01:00
parent 55506a27a4
commit 2d7f9c3a42
3 changed files with 15 additions and 3 deletions

View File

@ -168,11 +168,12 @@ class UsersController < ApplicationController
require 'csv'
CSV.parse(users_csv, :headers => true) do |row|
users = CSV.parse(users_csv, :headers => true).map { |row|
fields = row.to_hash
fields[:room_id] = room_id
User.create!(fields)
end
fields
}
User.upsert_all(users, unique_by: [:room_id, :email])
respond_to do |format|
format.html { redirect_to room_users_url(room_id), notice: 'Users were successfully created.' }

View File

@ -6,4 +6,7 @@ class User < ApplicationRecord
attribute :invited, :boolean, default: false
attribute :vote, :boolean, default: true
attribute :proxy, :boolean, default: false
validates :email, uniqueness: { scope: :room_id }
validates :room_id, uniqueness: { scope: :email }
end

View File

@ -0,0 +1,8 @@
class UpsertableUsers < ActiveRecord::Migration[6.0]
def change
change_column_default :users, :created_at, from: nil, to: ->{ 'now()' }
change_column_default :users, :updated_at, from: nil, to: ->{ 'now()' }
add_index :users, [:room_id, :email], unique: true
end
end