JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Filter using Array as value fails

Offen
#497 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Type: Bug
Vorherrschende Sprache
Ruby
Sterne
2.3k
Forks
546
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Using 0.6.0

Trying to use a filter like so:

?filter[users][]=1&filter[users][]=2

which Rails parses to {"filter"=>{"users"=>["1","2"]}}

This results in a crash, because the CSV parsing that happens in verify_filter is causing an exception to be thrown:

Internal Server Error: private method `gets' called for ["1"]:Array /usr/local/var/rbenv/versions/2.2.1/lib/ruby/2.2.0/csv.rb:1798:in `block in shift'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/2.2.0/csv.rb:1796:in `loop'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/2.2.0/csv.rb:1796:in `shift'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/2.2.0/csv.rb:1315:in `parse_line'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.5.5/lib/jsonapi/resource.rb:538:in `verify_filter'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.5.5/lib/jsonapi/resource.rb:526:in `block in verify_filters'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.5.5/lib/jsonapi/resource.rb:525:in `each'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.5.5/lib/jsonapi/resource.rb:525:in `verify_filters'
/usr/local/var/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.5.5/lib/jsonapi/operation.rb:45:in `apply'

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Der Stacktrace verweist auf jsonapi/resource.rb:538 in verify_filter, wo das CSV-Parsing den Array-Wert erhält. Reproduziere die Anfrage mit filter[users][]=1 und filter[users][]=2 und verfolge anschließend verify_filters und verify_filter. Die Aufgabe ist erledigt, wenn dieser Filter mit Array-Wert nicht mehr abstürzt und als gültiger Filter behandelt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rails, ruby
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.