27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/monies/serialization/sequel.rb', line 27
def to_s_append(dataset, sql)
column, value = args[0], args[1]
return super(dataset, sql) unless value.is_a?(Monies)
column = column.value.to_sym if column.is_a?(::Sequel::SQL::Identifier)
currency = dataset.model.send(:"#{column}_currency")
sql << '('
dataset.literal_append(sql, column)
sql << ' ' << op.to_s << ' '
if currency.nil?
dataset.literal_append(sql, Monies.dump(value))
elsif currency.is_a?(String)
unless value.nil? || value.currency == currency
raise Monies::CurrencyError, "can't serialize #{value.currency} to #{currency}"
end
dataset.literal_append(sql, dataset.model.send(:"serialize_#{column}", value))
elsif currency.is_a?(Symbol)
dataset.literal_append(sql, dataset.model.send(:"serialize_#{column}", value))
sql << ' AND '
dataset.literal_append(sql, currency)
sql << ' = '
dataset.literal_append(sql, value.currency)
end
sql << ')'
end
|