houdini/app/models/bank_account.rb
2020-06-15 10:26:57 -05:00

39 lines
1.5 KiB
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
class BankAccount < ApplicationRecord
# :name, # str (readable bank name identifier, eg. "Wells Fargo *1234")
# :confirmation_token, # str (randomly generated private token for email confirmation)
# :account_number, # str (last digits only)
# :bank_name, # str
# :pending_verification, # bool (whether this bank account is still awaiting email confirmation)
# :status, # str
# :email, # str (contact email associated with the user who created this bank account)
# :deleted, # bool (soft delete flag)
# :stripe_bank_account_token, # str
# :stripe_bank_account_id, # str
# :nonprofit_id, :nonprofit
validates :stripe_bank_account_token, presence: true, uniqueness: true
validates :stripe_bank_account_id, presence: true, uniqueness: true
validates :nonprofit, presence: true
validates :email, presence: true, format: {with: Email::Regex}
validate :nonprofit_must_be_vetted, on: :create
validate :nonprofit_has_stripe_account
has_many :payouts
belongs_to :nonprofit
def nonprofit_must_be_vetted
errors.add(:nonprofit, 'must be vetted') unless nonprofit&.vetted
end
def nonprofit_has_stripe_account
errors.add(:nonprofit, 'must have a Stripe account id') if !nonprofit || nonprofit.stripe_account_id.blank?
end
# Manually cause an instance to become invalid
def invalidate!
@not_valid = true
end
end