aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/type/integer.rb
diff options
context:
space:
mode:
authorKir Shatrov <shatrov@me.com>2015-09-07 21:20:15 +0300
committerSean Griffin <sean@seantheprogrammer.com>2015-09-21 10:12:13 -0600
commit9cc8c6f3730df3d94c81a55be9ee1b7b4ffd29f6 (patch)
tree68a48d84f3d2e1902d94316f781c4aee60a5f798 /activerecord/lib/active_record/type/integer.rb
parentb223d729d823dcf3c6915daa2bf48c028718c465 (diff)
downloadrails-9cc8c6f3730df3d94c81a55be9ee1b7b4ffd29f6.tar.gz
rails-9cc8c6f3730df3d94c81a55be9ee1b7b4ffd29f6.tar.bz2
rails-9cc8c6f3730df3d94c81a55be9ee1b7b4ffd29f6.zip
Move ActiveRecord::Type to ActiveModel
The first step of bringing typecasting to ActiveModel
Diffstat (limited to 'activerecord/lib/active_record/type/integer.rb')
-rw-r--r--activerecord/lib/active_record/type/integer.rb66
1 files changed, 0 insertions, 66 deletions
diff --git a/activerecord/lib/active_record/type/integer.rb b/activerecord/lib/active_record/type/integer.rb
deleted file mode 100644
index c5040c6d3b..0000000000
--- a/activerecord/lib/active_record/type/integer.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-module ActiveRecord
- module Type
- class Integer < Value # :nodoc:
- include Helpers::Numeric
-
- # Column storage size in bytes.
- # 4 bytes means a MySQL int or Postgres integer as opposed to smallint etc.
- DEFAULT_LIMIT = 4
-
- def initialize(*)
- super
- @range = min_value...max_value
- end
-
- def type
- :integer
- end
-
- def deserialize(value)
- return if value.nil?
- value.to_i
- end
-
- def serialize(value)
- result = cast(value)
- if result
- ensure_in_range(result)
- end
- result
- end
-
- protected
-
- attr_reader :range
-
- private
-
- def cast_value(value)
- case value
- when true then 1
- when false then 0
- else
- value.to_i rescue nil
- end
- end
-
- def ensure_in_range(value)
- unless range.cover?(value)
- raise RangeError, "#{value} is out of range for #{self.class} with limit #{_limit}"
- end
- end
-
- def max_value
- 1 << (_limit * 8 - 1) # 8 bits per byte with one bit for sign
- end
-
- def min_value
- -max_value
- end
-
- def _limit
- self.limit || DEFAULT_LIMIT
- end
- end
- end
-end