diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2016-12-31 19:22:49 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-01-01 04:01:17 +0900 |
commit | d8e5751a1d7ad027519463134fe1a861d02494fc (patch) | |
tree | caf33980d24cbfddb3aeba787420d0f156d6219e /activemodel | |
parent | ac0b28883b78999c5605d032eb42fcd842841e6b (diff) | |
download | rails-d8e5751a1d7ad027519463134fe1a861d02494fc.tar.gz rails-d8e5751a1d7ad027519463134fe1a861d02494fc.tar.bz2 rails-d8e5751a1d7ad027519463134fe1a861d02494fc.zip |
Extract `casted_true`/`casted_false` for `Type::ImmutableString`
The only difference between `Type::ImmutableString` and its subclasses
is the representation of the casted booleans. Prefer extracting
`casted_true`/`casted_false` and override these by subclasses.
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/type/immutable_string.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/activemodel/lib/active_model/type/immutable_string.rb b/activemodel/lib/active_model/type/immutable_string.rb index 58268540e5..c967d428ac 100644 --- a/activemodel/lib/active_model/type/immutable_string.rb +++ b/activemodel/lib/active_model/type/immutable_string.rb @@ -8,8 +8,8 @@ module ActiveModel def serialize(value) case value when ::Numeric, ActiveSupport::Duration then value.to_s - when true then "t" - when false then "f" + when true then casted_true + when false then casted_false else super end end @@ -19,12 +19,20 @@ module ActiveModel def cast_value(value) result = \ case value - when true then "t" - when false then "f" + when true then casted_true + when false then casted_false else value.to_s end result.freeze end + + def casted_true + "t".freeze + end + + def casted_false + "f".freeze + end end end end |