module Amountable::ActAsMethod
Public Instance Methods
act_as_amountable(options = {})
click to toggle source
Possible storage values: [:table, :jsonb]
# File lib/amountable.rb, line 59 def act_as_amountable(options = {}) self.extend Amountable::ClassMethod class_attribute :amount_names class_attribute :amount_sets class_attribute :amounts_column_name class_attribute :storage self.amount_sets = Hash.new { |h, k| h[k] = Set.new } self.amount_names = Set.new self.amounts_column_name = 'amounts' self.storage = (options[:storage] || :table).to_sym case self.storage when :table has_many :amounts, class_name: 'Amountable::Amount', as: :amountable, dependent: :destroy, autosave: false include Amountable::TableMethods when :jsonb self.amounts_column_name = options[:column].to_s if options[:column] include Amountable::JsonbMethods else raise ArgumentError.new("Please specify a storage: #{ALLOWED_STORAGE}") end validate :validate_amount_names include Amountable::InstanceMethods end