deduplicate users as well
This commit is contained in:
parent
55506a27a4
commit
2d7f9c3a42
|
@ -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.' }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
Loading…
Reference in New Issue