Module: MoneyAttribute

Defined in:
lib/money_attribute/type.rb,
lib/money_attribute/macro.rb,
lib/money_attribute/query.rb,
lib/money_attribute/current.rb,
lib/money_attribute/railtie.rb,
lib/money_attribute/version.rb,
lib/money_attribute/converter.rb,
lib/money_attribute/query/sum.rb,
lib/money_attribute/query/pick.rb,
lib/money_attribute/query/pluck.rb,
lib/money_attribute/money_amount.rb,
lib/money_attribute/configuration.rb,
lib/money_attribute/query/helpers.rb,
lib/money_attribute/attribute_spec.rb,
lib/money_attribute/query/amount_order.rb,
lib/money_attribute/form_builder_extension.rb,
lib/money_attribute/query/amount_condition.rb,
lib/money_attribute/attribute_spec_registry.rb,
lib/money_attribute/query/currency_condition.rb,
lib/money_attribute/migration_extensions/helper.rb,
lib/generators/money_attribute/initializer_generator.rb,
lib/money_attribute/migration_extensions/table_definition.rb,
lib/money_attribute/migration_extensions/schema_statements.rb

Defined Under Namespace

Modules: AmountCondition, AmountOrder, AttributeSpecRegistry, CurrencyCondition, FormBuilderExtension, Generators, Macro, MigrationExtensions, MoneyAmount, PickAmount, PluckAmount, Query, QueryHelpers, QueryMethods, SumAmount Classes: AmountType, AttributeSpec, Config, Converter, Current, DecimalAmountType, IntegerAmountType, Railtie

Constant Summary collapse

VERSION =
'1.2.0'
CONFIG_MUTEX =
Mutex.new
INTEGER_CONSTRUCTOR =
lambda do |amount, currency|
  next nil if amount.nil?

  resolved = Money::Currency.resolve(currency.presence || MoneyAttribute.default_currency) || 'XXX'
  Mint::Money.from_subunits(amount, resolved)
end.freeze
DECIMAL_CONSTRUCTOR =
lambda do |amount, currency|
  next nil if amount.nil?

  resolved = Money::Currency.resolve(currency.presence || MoneyAttribute.default_currency) || 'XXX'
  Mint::Money.from(amount, resolved)
end.freeze

Class Method Summary collapse

Class Method Details

.configConfig

Returns the lazily initialized gem configuration.

Returns:



11
12
13
# File 'lib/money_attribute/configuration.rb', line 11

def config
  CONFIG_MUTEX.synchronize { @config ||= Config.new }
end

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Yields the current configuration object for mutation.

Yields:

  • (config)

    the current configuration



19
# File 'lib/money_attribute/configuration.rb', line 19

def configure = yield config

.default_currencyMint::Currency

Returns the current request or default currency as a resolved currency. Memoized per-thread — within a request, Current.currency is stable.

Returns:

  • (Mint::Currency)


25
26
27
28
29
30
31
32
33
34
# File 'lib/money_attribute/configuration.rb', line 25

def default_currency
  code = MoneyAttribute::Current.currency.presence || config.default_currency

  last_code, last_currency = Thread.current[:money_attribute_default_currency]
  return last_currency if last_code == code

  currency = Money::Currency.resolve!(code)
  Thread.current[:money_attribute_default_currency] = [code, currency]
  currency
end