Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Filter values for related resources are wrapped in nested arrays?

Ouverte
#1,110 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
rails, ruby
Domaine
api, backend

Piste de recherche

Commencez dans lib/jsonapi/resource.rb vers la ligne 753 et comparez la gestion des valeurs de filtre avec le commit 3a691b2. Reproduisez le cas de filtre personnalisé décrit dans l’issue, en vérifiant si Resource#verify_resource provoque des tableaux imbriqués. Le travail est terminé lorsque les valeurs de filtre des ressources associées ne sont pas inutilement encapsulées et que l’analyse des chaînes fonctionne toujours ; aucun fichier de test n’est nommé dans l’issue.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

I'm a little confused as to what's going on, but upgrading from 0.8.3 to 0.9 broke some filters I have in place. e.g.:

VERIFY_RADIUS_FILTER = ->(value, context) {
  return NoLimit.new unless context[:current_location].present?

  value
}

FILTER_RADIUS_FROM_LOCATION = ->(records, value, options) {
  location = options.dig(:context, :current_location)
  limit = Array(value).first

  return records unless location.present? && limit.present?

  records.near(location, Float(limit))
}

filter :radius, default: 100.0,
                verify: VERIFY_RADIUS_FILTER,
                apply: FILTER_RADIUS_FROM_LOCATION

I think this commit my be the culprit? https://github.com/cerebris/jsonapi-resources/commit/3a691b29adb3e7aff0743ef59e44556bedb260c9

From what I can tell, this results in Resource#verify_resource being called twice. For a custom filter, at least (which is what I've got), that means the raw value gets doubly-nested in an array: https://github.com/cerebris/jsonapi-resources/blob/19f4d7b59f92b05fa28c4f925391cf5998123308/lib/jsonapi/resource.rb#L753

Instead I wonder if that line should be something like:

filter_values += raw.is_a?(String) ? CSV.parse_line(raw) : Array(raw)

To make sure we don't wrap an array?

/cc @hidde-jan

Langage dominant
Ruby
Étoiles
2.3k
Forks
547
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JSONAPI-Resources/jsonapi-resources

Toutes les issues de JSONAPI-Resources/jsonapi-resources

Issues similaires

Plus d'issues Ruby

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.