Module: Sequel::CurrencyRates

Defined in:
lib/sequel/extensions/currency_rates.rb

Overview

Extension for currency-conversion via currency_rates table

Instance Method Summary collapse

Instance Method Details

#table_nameSymbol

Returns a table name



37
38
39
# File 'lib/sequel/extensions/currency_rates.rb', line 37

def table_name
  respond_to?(:first_source_alias) ? first_source_alias : super
end

#with_rates(aliaz = :currency_rates, table: table_name, rates_table: Sequel[:currency_rates], currency_column: :currency, time_column: :created_at) ⇒ Sequel::Dataset

Join a rates table

Examples:

Order::Model.with_rates.select(Sequel[:amount].in_usd)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/sequel/extensions/currency_rates.rb', line 17

def with_rates(
  aliaz = :currency_rates,
  table: table_name,
  rates_table: Sequel[:currency_rates],
  currency_column: :currency,
  time_column: :created_at
)
  table = Sequel[table]
  rates = Sequel[aliaz]

  currency_expr = wrap_if_symbol(currency_column, table)
  time_expr = wrap_if_symbol(time_column, table)

  join_expr = (rates[:currency] =~ currency_expr) & rates[:period].pg_range.contains(time_expr)
  left_join(rates_table.as(aliaz), join_expr)
end