JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Fields filtering with include
Nobody has claimed this yet.
- Dominant language
- Ruby
- Stars
- 2.3k
- Forks
- 546
- PR merge metrics
- No merged PRs in 30d
Description
Version 0.9.12
When using fields[events]=name + include=establishment the key relationships disappear from the response hash.
Basic association is events belongs_to establishment
Issue is coming from here:
# JSONAPI::ResourceSerializer#supplying_relationship_fields
def supplying_relationship_fields(resource_klass)
@_supplying_relationship_fields.fetch resource_klass do
relationships = Set.new(resource_klass._relationships.keys.map(&:to_sym))
cur = resource_klass
while cur != JSONAPI::Resource
if @fields.has_key?(cur._type)
# here...
# It always empty the Set
#relationships &= @fields[cur._type]
break
end
cur = cur.superclass
end
@_supplying_relationship_fields[resource_klass] = relationships
end
end
Commenting relationships &= @fields[cur._type] solves this issue. @DavidMikeSimon could you describe your mind here? I know it was a loooong time ago but your help might help to correctly fix this issue.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in lib/jsonapi/resource_serializer.rb at JSONAPI::ResourceSerializer#supplying_relationship_fields and reproduce the fields[events]=name plus include=establishment case described in the issue. Verify the response hash retains the relationships key while still applying field filtering; the intended behavior should be confirmed before changing the set intersection.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rails, ruby
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100