JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Dynamic relationships

Open
#701 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Type: Enhancement
Dominant language
Ruby
Stars
2.3k
Forks
546
PR merge metrics
No merged PRs in 30d

Description

I am using JR for my project finally. I have a requirement which has been talked about before, which I intend to implement myself, but would like to know if this project is interested in receiving it too. If so, I will develop it on a branch, otherwise I will write a custom extension that will live in my app.

In summary, I require that relationships can also be dynamic rather than hard coded using has_many etc..
The idea being that the client side is helped significantly if we translate something that may end up being either complex to read or maybe would require a number of http requests - into a simple relationship that the client can use easier.

Probably best to use an example

Say we have some metadata in our AR model and that meta data has a definition of "some objects of type 'image' with ids 1,2,3,4,5,6", keyed by the name "my_images". Whilst this could be read by the client, they would then have to make decisions on the type, then go and fetch those images themselves.
We want "my_images" to be a relationship that can be included or linked to as normal (we would have to rely on the application to provide the links though as JR could not possible calculate them itself)

I was thinking of an implementation in the resource as a class method that is passed a block which says "define dynamic relationships" and the block could return maybe an array or relationships to define or something like that - but I haven't thought that much into it yet.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the prior discussion and the resource relationship APIs, focusing on the proposed class method or block and the metadata-driven image example. Define acceptance around dynamically exposing a relationship that can be included or linked while application-provided links remain supported; the issue names no files or tests, so locate those entry points before implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rails, ruby
Domain
api, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.