tuist/projects/cloud/app/services/user_create_service.rb

30 lines
682 B
Ruby

# frozen_string_literal: true
class UserCreateService < ApplicationService
attr_reader :email, :password, :skip_confirmation
def initialize(email:, password: nil, skip_confirmation: false)
super()
@email = email
@password = password
@skip_confirmation = skip_confirmation
end
def call
ActiveRecord::Base.transaction do
user = User.find_or_initialize_by(email: email) do |user|
if password.nil?
user.password = Devise.friendly_token.first(16)
else
user.password = password
end
end
if skip_confirmation
user.skip_confirmation!
end
user.save!
user
end
end
end