How to bypass a create record after validation wo error ?

I have a specific signup process to handle, and I am turning around
the solution wo finding a clear validation ...
a visitor fill in a User Registration form ( email /pwd /pwd
confirmation )

I wrote a UserValidator class to check the uniqueness of the email
field

# if no user registered w this email, then no error , can proceed to
create
  User.where(:email => self.email).empty? # no error

# if a user is already registered w this email,
target_subdomain = Subdomain.find(self.subdomain_id)
unless target_subdomain.members.where(;email => self;email).empty?
      record.errors[:email] << "is already a member" # error
  else # user is not a not a member of this subdomain....
      existing_user = User.where(:email => self.email).first # get
existing user record
      target_subdomain.members << existing_user
      # THEN I WOULD LIKE TO BYPASS THE CREATION.... w no error

is there a way to do it ... ? it would simplify my sign up process ,
only one form, only one process...

thanks for your feedback ..

I have a specific signup process to handle, and I am turning around

the solution wo finding a clear validation …

a visitor fill in a User Registration form ( email /pwd /pwd

confirmation )

I wrote a UserValidator class to check the uniqueness of the email

field

if no user registered w this email, then no error , can proceed to

create

User.where(:email => self.email).empty? # no error

if a user is already registered w this email,

target_subdomain = Subdomain.find(self.subdomain_id)

unless target_subdomain.members.where(;email => self;email).empty?

  record.errors[:email] << "is already a member"    # error

else # user is not a not a member of this subdomain…

  existing_user = User.where(:email => self.email).first  # get

existing user record

  target_subdomain.members << existing_user

  # THEN I WOULD LIKE TO BYPASS THE CREATION.... w no error

A little hard to understand what you are doing, but if you want to save/create without validation then do:

record.save(:validate => false)

Otherwise please be a little more clear, from your code it is not obvious.

I know about record.save(:validate => false) ( I used it in my DB
seed)

trying to be more explicit , I want to validate the record, but during
the validation process ( email uniqueness) one error type should be
considered as a specific case , then the user record should not be
created but added as a membership to a subdomain ..
I guess the best way to do iy is to perform a specific email
uniqueness validation ( in a validator class), rather than user.save,
I'll use
user.valid?
then split processing according to user.errors , in some case it'll be
a true error ( email not unique in a subdomain) and in other case ,
email not unique in the DB but user is not yet a member of this
subdomain, so add a new membership..

the model is :
   User - has_many Membership /has_many Subdomains through
Memberships
   Subdomain - has_many Membership /has_many Members through
Memberships

as User are identified by emails, I can have 3 cases ...
1- a brand new User ( not yet registered at all) ) =>
member1@domain.com -> Subdomain A
2- a User willing to register as a Member in a new Subdomain .
member1@domain.com -> Subdomain B ( email not unique in DB)
3- a User willing to register as member1@domain.com -> Subdomain A
( email not unique , already registered w Subdomain A)
case 2 and 3 will be considered as errors during email uniqueness
validation , so user.errors will not be empty ..
but I can check the message , if case 2 then I can add a new
membership for the existing user...

my issue was trying to check it during validation, which seems to be
bad, better check raise the error and process it ...

hope it's a little bit enlighted ;-)) thanks for sharing your
feedback