11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/danconia/integrations/active_record.rb', line 11
def money(*attr_names)
attr_names.each do |attr_name|
amount_column = attr_name
currency_column = "#{attr_name}_currency"
class_eval " def \#{attr_name}= value\n write_attribute :\#{amount_column}, value.is_a?(Money) ? value.amount : value\n write_attribute :\#{currency_column}, value.currency.code if respond_to?(:\#{currency_column}) && value.is_a?(Money)\n end\n\n def \#{attr_name}\n amount = read_attribute :\#{amount_column}\n currency = read_attribute :\#{currency_column}\n decimals = self.class.columns.detect { |c| c.name == '\#{amount_column}' }.scale\n Money.new amount, currency, decimals: decimals if amount\n end\n EOR\n end\nend\n", __FILE__, __LINE__ + 1
|