Method: MembershipChange#save

Defined in:
app/models/membership_change.rb

#saveObject



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'app/models/membership_change.rb', line 136

def save
  return false unless valid?

  Order.transaction do
    expiration = 1.second.ago

    # Complete checkout
    success = checkout.finish

    # Failure?
    raise MembershipChange::Error unless success

    # Expire old memberships
    changing_memberships.each do |old|
      old.adjust_expiration_to(expiration)
    end
  end
  true
rescue MembershipChange::Error => e
  payment.errors[:base].each do |msg|
    errors.add(:base, msg)
  end
  false
end