JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Include has_many through: relationship fails

Abierto
#643 8 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Ruby
Estrellas
2.3k
Forks
546
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

With the following set of models:

class User < ActiveRecord::Base
    ...
    has_many :participations
    has_many :attempts, through: :participations
    has_many :completed_attempts, -> { completed }, through: :participations, source: :attempts
    ...
end
class Participation < ActiveRecord::Base
    ...
    belongs_to :user
    has_many :attempts
    ...
end
class Attempt < ActiveRecord::Base
    ...
    belongs_to :participation
    ...
end

the request GET /users/1?include=completed-attempts fails. completed-attempts.txt.

Likewise, GET /users/1?include=completed-attempts,attempts fails. completed-attempts_attempts.txt

However, as expected, GET /users/1?include=attempts works. attempts.txt

Changing the order, GET /users/1?include=attempts,completed-attempts, doesn't fail with a 500, however it returns the full list of Attempts for both the attempts and completed-attempts relationships. attempts_completed-attempts.txt

Querying the relations directly from the AR object works correctly for both attempts and completed_attempts.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo las solicitudes GET /users/1 indicadas con las definiciones de los modelos User, Participation y Attempt, comparando las respuestas de include con consultas directas de ActiveRecord. Investiga el manejo de las relaciones has_many-through filtradas y el orden de los includes anidados; se considera terminado cuando completed-attempts devuelve únicamente los intentos completados y todas las solicitudes indicadas evitan un 500.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rails, ruby
Área
api, backend
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.