houdini/app/models/campaign_gift_option.rb

37 lines
1,023 B
Ruby
Raw Normal View History

# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class CampaignGiftOption < ApplicationRecord
2019-06-21 22:12:54 +00:00
#TODO
# attr_accessible \
# :amount_one_time, #int (cents)
# :amount_recurring, #int (cents)
# :amount_dollars, #str, gets converted to amount
# :description, # text
# :name, # str
# :campaign, #assocation
# :quantity, #int (optional)
# :to_ship, #boolean
# :order, #int (optional)
# :hide_contributions #boolean (optional)
belongs_to :campaign
has_many :campaign_gifts
has_many :donations, through: :campaign_gifts
validates :name, presence: true
validates :campaign, presence: true
validates :amount_one_time, presence: true, numericality: { only_integer: true }, unless: :amount_recurring
validates :amount_recurring, presence: true, numericality: { only_integer: true }, unless: :amount_one_time
def total_gifts
return self.campaign_gifts.count
end
def as_json(options={})
h = super(options)
h[:total_gifts] = self.total_gifts
h
end
end