Slide 39
Slide 39 text
class RegistrationForm
include ActiveModel::Model
attr_reader :user, :account
attr_accessor :first_name, :last_name, :email, :name, :plan, :terms_of_service
# user validation
validates :first_name, presence: true
validates :last_name, presence: true
validates :email, presence: true, email: true
# account validation
validates :account_name, presence: true
# form custom validation
validates :plan, inclusion: {in AccountPlan::VALUES}
validates :terms_of_service, acceptance: true
# ensure uniqueness
validate :ensure_unique_user_email
validate :ensure_unique_account_name
def initialize
@user = User.new
@account = Account.new owner: @user
end
def update(attributes)
attributes.each do |name, value|
public_send "#{name}=", value
end
if valid? & user.update(user_attributes) && account.update(account_attributes)
account.users << user
AccountWasCreated.perform_later(account)