mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +00:00
Adds support for meta attribute
Currently, 0.10.0.pre doesn't support `meta` option in `render`. This way, there's no way to support features such as pagination. `0.9` had this feature in place. This adds support for it, as well as fixes small things in README.md. This won't support `meta` in array responses because arrays don't have keys, obviously. Also, the response should have a `root` key, otherwise no `meta` will be included. In some cases, for example using JsonApi, ArraySerializer will result in a response with a `root`. In that case, `meta` will be included.
This commit is contained in:
@@ -18,7 +18,8 @@ module ActiveModel
|
||||
end
|
||||
|
||||
def as_json(options = {})
|
||||
serializable_hash(options)
|
||||
hash = serializable_hash(options)
|
||||
include_meta(hash)
|
||||
end
|
||||
|
||||
def self.create(resource, options = {})
|
||||
@@ -30,6 +31,25 @@ module ActiveModel
|
||||
def self.adapter_class(adapter)
|
||||
"ActiveModel::Serializer::Adapter::#{adapter.to_s.classify}".safe_constantize
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def meta
|
||||
serializer.meta if serializer.respond_to?(:meta)
|
||||
end
|
||||
|
||||
def meta_key
|
||||
serializer.meta_key || "meta"
|
||||
end
|
||||
|
||||
def root
|
||||
serializer.json_key
|
||||
end
|
||||
|
||||
def include_meta(json)
|
||||
json[meta_key] = meta if meta && root
|
||||
json
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user