How to filter by polymorphic resource association filter?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza con la declaración de la asociación polimórfica documentable de DocumentsDocumentableResource y los dos ejemplos de solicitudes de filtros. Rastrea cómo JSONAPI Resources valida los filtros para relaciones polimórficas y determina si se admite el despacho específico por tipo. Se considera terminado cuando exista una forma documentada y probada de invocar el filtro correspondiente, o una explicación claramente delimitada de la limitación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
This issue is a (choose one):
- Problem/bug report.
Checklist before submitting:
- I've searched for an existing issue.
Description
Bug reports:
If for example I have such setup, I have Document model that have many DocumentsDocumentables, which have documentable as polymorphic association and can have either Employee or Comment in it. I set up :
class Document < ApplicationRecord
has_many :documents_documentables, dependent: :destroy
end
class DocumentsDocumentable < ApplicationRecord
belongs_to :document
belongs_to :documentable, polymorphic: true
end
class Employee < ApplicationRecord
has_many :documents_documentables, as: :documentable
end
class Comment < ApplicationRecord
has_many :documents_documentables, as: :documentable
end
module Api
module V1
class DocumentResource < BaseResource
attributes :file_name
has_many :documents_documentables
filter :id
end
end
end
module Api
module V1
class DocumentsDocumentableResource < BaseResource
attributes :documentable_id, :documentable_type, :document_id
has_one :document
has_one :documentable, polymorphic: true, eager_load_on_include: false
end
end
end
module Api
module V1
class EmployeeResource < BaseResource
filter :custom_employee_filter, apply: lambda { |records, value, _options|
puts "custom employee filter"
}
end
end
end
module Api
module V1
class CommentResource < BaseResource
filter :custom_comment_filter, apply: lambda { |records, value, _options|
puts "custom comment filter"
}
end
end
end
Having this setup, how can I filter DocumentDocumentable by documentable.custom_<employee | comment>_filter then?
I tried smth like that:
/api/v1/documents-documentables?filter=documentable.customEmployeeFilter=filterValue , or
/api/v1/documents-documentables?filter=documentable.customCommentFilter=filterValue
Both gives me error:
{
error: {
code: "102",
detail: "documentable.customEmployeeFilter is not allowed.",
status: "400",
title: "Filter not allowed"
}
}
Is it possible at all somehow to call both filters, and if yes - how should I change my resources, is there any param I can pass to further specialize polymorpthic resource's type?
- Lenguaje dominante
- Ruby
- Estrellas
- 2.3k
- Forks
- 546
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JSONAPI-Resources/jsonapi-resources
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
ArgumentError with Rails 8.1 Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
JSONAPI-Resources/jsonapi-resources#1488 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
JSONAPI-Resources/jsonapi-resources#1479 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
JSONAPI-Resources/jsonapi-resources#1477 · 3 comentarios · 1 reacción ·
-
Fields filtering with include Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de JSONAPI-Resources/jsonapi-resources
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
ds-drift
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
we-promise/sure#3693 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
simp/pupmod-simp-simp#395 ·