diff options
Diffstat (limited to 'activemodel/lib/active_model/serialization.rb')
-rw-r--r-- | activemodel/lib/active_model/serialization.rb | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/activemodel/lib/active_model/serialization.rb b/activemodel/lib/active_model/serialization.rb index 542cff3aaa..8f90ef64ba 100644 --- a/activemodel/lib/active_model/serialization.rb +++ b/activemodel/lib/active_model/serialization.rb @@ -54,12 +54,14 @@ module ActiveModel # # person = Person.new # person.serializable_hash # => {"name"=>nil} - # person.as_json # => "{\"name\":null}" + # person.as_json # => {"name"=>nil} + # person.to_json # => "{\"name\":null}" # person.to_xml # => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<serial-person... # # person.name = "Bob" # person.serializable_hash # => {"name"=>"Bob"} - # person.as_json # => "{\"name\":\"Bob\"}" + # person.as_json # => {"name"=>"Bob"} + # person.to_json # => "{\"name\":\"Bob\"}" # person.to_xml # => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<serial-person... # # Valid options are <tt>:only</tt>, <tt>:except</tt> and <tt>:methods</tt> . @@ -67,14 +69,14 @@ module ActiveModel def serializable_hash(options = nil) options ||= {} - options[:only] = Array.wrap(options[:only]).map { |n| n.to_s } - options[:except] = Array.wrap(options[:except]).map { |n| n.to_s } + only = Array.wrap(options[:only]).map(&:to_s) + except = Array.wrap(options[:except]).map(&:to_s) attribute_names = attributes.keys.sort - if options[:only].any? - attribute_names &= options[:only] - elsif options[:except].any? - attribute_names -= options[:except] + if only.any? + attribute_names &= only + elsif except.any? + attribute_names -= except end method_names = Array.wrap(options[:methods]).inject([]) do |methods, name| |