/app/forms/user/registration_form.rb

https://github.com/PopulateTools/gobierto · Ruby · 58 lines · 43 code · 14 blank · 1 comment · 2 complexity · 6fe0a8c9d67fe395456c5437111f3d25 MD5 · raw file

  1. # frozen_string_literal: true
  2. class User::RegistrationForm < BaseForm
  3. attr_accessor(
  4. :email,
  5. :site,
  6. :creation_ip,
  7. :referrer_url,
  8. :referrer_entity
  9. )
  10. validates :site, presence: true
  11. validates :email, format: { with: User::EMAIL_ADDRESS_REGEXP }
  12. def save
  13. return false unless valid?
  14. send_confirmation_instructions if save_user
  15. end
  16. def user
  17. @user ||= User.new
  18. end
  19. private
  20. def save_user
  21. @user = user.tap do |user_attributes|
  22. user_attributes.email = email
  23. user_attributes.site = site
  24. user_attributes.creation_ip = creation_ip
  25. user_attributes.referrer_entity = referrer_entity
  26. user_attributes.referrer_url = referrer_url
  27. end
  28. if @user.valid?
  29. @user.save
  30. @user
  31. else
  32. promote_errors(@user.errors)
  33. false
  34. end
  35. end
  36. def send_confirmation_instructions
  37. user.regenerate_confirmation_token
  38. deliver_confirmation_email
  39. end
  40. protected
  41. def deliver_confirmation_email
  42. User::UserMailer.confirmation_instructions(user, site).deliver_later
  43. end
  44. end