/app/forms/gobierto_admin/admin_settings_form.rb

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

  1. # frozen_string_literal: true
  2. module GobiertoAdmin
  3. class AdminSettingsForm < BaseForm
  4. attr_accessor(
  5. :id,
  6. :name,
  7. :email,
  8. :password,
  9. :password_confirmation
  10. )
  11. delegate :persisted?, to: :admin
  12. validates :name, :email, presence: true
  13. validates :email, format: { with: Admin::EMAIL_ADDRESS_REGEXP }
  14. validates :password, confirmation: true
  15. def save
  16. @new_record = admin.new_record?
  17. return false unless valid?
  18. if save_admin
  19. admin
  20. end
  21. end
  22. def admin
  23. @admin ||= Admin.find_by(id: id)
  24. end
  25. private
  26. def save_admin
  27. @admin = admin.tap do |admin_attributes|
  28. admin_attributes.name = name
  29. admin_attributes.email = email
  30. admin_attributes.password = password if password
  31. end
  32. if @admin.valid?
  33. ActiveRecord::Base.transaction do
  34. @admin.save unless persisted?
  35. @admin.save
  36. end
  37. @admin
  38. else
  39. promote_errors(@admin.errors)
  40. false
  41. end
  42. end
  43. end
  44. end