mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Merge pull request #1034 from engineyard/id-attribute
allow id attribute to be overriden
This commit is contained in:
commit
f7a1585b75
@ -50,9 +50,12 @@ module ActiveModel
|
||||
key = options.fetch(:key, attr)
|
||||
@_attributes_keys[attr] = { key: key } if key != attr
|
||||
@_attributes << key unless @_attributes.include?(key)
|
||||
define_method key do
|
||||
object.read_attribute_for_serialization(attr)
|
||||
end unless method_defined?(key) || _fragmented.respond_to?(attr)
|
||||
|
||||
unless respond_to?(key, false) || _fragmented.respond_to?(attr)
|
||||
define_method key do
|
||||
object.read_attribute_for_serialization(attr)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.fragmented(serializer)
|
||||
|
||||
@ -33,6 +33,15 @@ module ActiveModel
|
||||
|
||||
assert_equal([:title], serializer_class._attributes)
|
||||
end
|
||||
|
||||
def test_id_attribute_override
|
||||
serializer = Class.new(ActiveModel::Serializer) do
|
||||
attribute :name, key: :id
|
||||
end
|
||||
|
||||
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer.new(@blog))
|
||||
assert_equal({ blog: { id: "AMS Hints" } }, adapter.serializable_hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user