Class: Signup

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Naming
Includes:
ActiveModel::Conversion, ActiveModel::Validations
Defined in:
app/models/signup.rb

Overview

Responsible for handling the combo User/Account creation. Also deals with Account creation when signing in as an existing User.

Constant Summary collapse

FIELDS =
{
  :account => {
    :cardholder_name   => :cardholder_name,
    :billing_email     => :billing_email,
    :card_number       => :card_number,
    :expiration_month  => :expiration_month,
    :expiration_year   => :expiration_year,
    :verification_code => :verification_code,
    :plan              => :plan,
    :street_address    => :street_address,
    :extended_address  => :extended_address,
    :locality          => :locality,
    :region            => :region,
    :postal_code       => :postal_code,
    :country_name      => :country_name
  },
  :user => {
    :email    => :email,
    :password => :password,
  }
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Signup

Returns a new instance of Signup.



34
35
36
37
38
39
40
41
# File 'app/models/signup.rb', line 34

def initialize(attributes = {})
  if attributes
    attributes.each do |attribute, value|
      send(:"#{attribute}=", value)
    end
  end
  @check_password = true
end

Instance Attribute Details

#billing_emailObject

Returns the value of attribute billing_email.



30
31
32
# File 'app/models/signup.rb', line 30

def billing_email
  @billing_email
end

#card_numberObject

Returns the value of attribute card_number.



30
31
32
# File 'app/models/signup.rb', line 30

def card_number
  @card_number
end

#cardholder_nameObject

Returns the value of attribute cardholder_name.



30
31
32
# File 'app/models/signup.rb', line 30

def cardholder_name
  @cardholder_name
end

#country_nameObject

Returns the value of attribute country_name.



30
31
32
# File 'app/models/signup.rb', line 30

def country_name
  @country_name
end

#couponObject

Returns the value of attribute coupon.



30
31
32
# File 'app/models/signup.rb', line 30

def coupon
  @coupon
end

#emailObject

Returns the value of attribute email.



30
31
32
# File 'app/models/signup.rb', line 30

def email
  @email
end

#expiration_monthObject

Returns the value of attribute expiration_month.



30
31
32
# File 'app/models/signup.rb', line 30

def expiration_month
  @expiration_month
end

#expiration_yearObject

Returns the value of attribute expiration_year.



30
31
32
# File 'app/models/signup.rb', line 30

def expiration_year
  @expiration_year
end

#extended_addressObject

Returns the value of attribute extended_address.



30
31
32
# File 'app/models/signup.rb', line 30

def extended_address
  @extended_address
end

#localityObject

Returns the value of attribute locality.



30
31
32
# File 'app/models/signup.rb', line 30

def locality
  @locality
end

#passwordObject

Returns the value of attribute password.



30
31
32
# File 'app/models/signup.rb', line 30

def password
  @password
end

#planObject

Returns the value of attribute plan.



30
31
32
# File 'app/models/signup.rb', line 30

def plan
  @plan
end

#postal_codeObject

Returns the value of attribute postal_code.



30
31
32
# File 'app/models/signup.rb', line 30

def postal_code
  @postal_code
end

#regionObject

Returns the value of attribute region.



30
31
32
# File 'app/models/signup.rb', line 30

def region
  @region
end

#street_addressObject

Returns the value of attribute street_address.



30
31
32
# File 'app/models/signup.rb', line 30

def street_address
  @street_address
end

#verification_codeObject

Returns the value of attribute verification_code.



30
31
32
# File 'app/models/signup.rb', line 30

def verification_code
  @verification_code
end

Instance Method Details

#accountObject



71
72
73
# File 'app/models/signup.rb', line 71

def 
  @account ||= Account.new
end

#existing_userObject



88
89
90
# File 'app/models/signup.rb', line 88

def existing_user
  @existing_user ||= User.find_by_email(email)
end

#membershipObject



92
93
94
95
96
# File 'app/models/signup.rb', line 92

def membership
  @membership ||= Membership.new(:user    => user,
                                 :account => ,
                                 :admin   => true)
end

#new_userObject



84
85
86
# File 'app/models/signup.rb', line 84

def new_user
  @new_user ||= User.new
end

#persisted?Boolean

used by ActiveModel

Returns:

  • (Boolean)


44
45
46
# File 'app/models/signup.rb', line 44

def persisted?
  false
end

#saveObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'app/models/signup.rb', line 48

def save
  delegate_attributes_for(:account)
  

  if !existing_user
    delegate_attributes_for(:user)
    populate_additional_user_fields
  end

  if valid?
    begin
      save!
      true
    rescue ActiveRecord::RecordNotSaved
      delegate_errors_for(:account)
      delegate_errors_for(:user)
      false
    end
  else
    false
  end
end

#userObject



75
76
77
# File 'app/models/signup.rb', line 75

def user
  existing_user || new_user
end

#user=(signed_in_user) ⇒ Object



79
80
81
82
# File 'app/models/signup.rb', line 79

def user=(signed_in_user)
  @check_password = false
  @existing_user  = signed_in_user
end

#valid?Boolean

Returns:

  • (Boolean)


98
99
100
101
102
# File 'app/models/signup.rb', line 98

def valid?
  errors.clear
  validate
  errors.empty?
end