diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index feb7d228..57ad5180 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -69,7 +69,12 @@ end def attributes(*attrs) @_attributes.concat attrs - attrs.each{|attr| define_attribute_accessor(attr)} + + attrs.each do |attr| + define_method attr do + object.read_attribute_for_serialization attr + end unless method_defined?(attr) + end end def has_one(*attrs) @@ -86,27 +91,13 @@ end options = attrs.extract_options! attrs.each do |attr| - define_association_accessor(attr) + define_method attr do + object.send attr + end unless method_defined?(attr) + @_associations[attr] = klass.new(attr, options) end end - - def define_accessor_unless_defined(attr, &block) - return if method_defined?(attr) - define_method(attr, &block) - end - - def define_attribute_accessor(attr) - define_accessor_unless_defined(attr) do - object.read_attribute_for_serialization(attr) - end - end - - def define_association_accessor(attr) - define_accessor_unless_defined(attr) do - object.__send__(attr) - end - end end def initialize(object, options={})