forked from datamapper/dm-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
decimal.rb
36 lines (28 loc) · 997 Bytes
/
decimal.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module DataMapper
class Property
class Decimal < Numeric
load_as BigDecimal
dump_as BigDecimal
coercion_method :to_decimal
DEFAULT_PRECISION = 10
DEFAULT_SCALE = 0
precision(DEFAULT_PRECISION)
scale(DEFAULT_SCALE)
protected
def initialize(model, name, options = {})
super
[ :scale, :precision ].each do |key|
unless options.key?(key)
warn "options[#{key.inspect}] should be set for #{self.class}, defaulting to #{send(key).inspect}"
end
end
unless @scale >= 0
raise ArgumentError, "scale must be equal to or greater than 0, but was #{@scale.inspect}"
end
unless @precision >= @scale
raise ArgumentError, "precision must be equal to or greater than scale, but was #{@precision.inspect} and scale was #{@scale.inspect}"
end
end
end # class Decimal
end # class Property
end # module DataMapper