JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Filter using Array as value fails

オープン
#497 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Type: Bug
主要言語
Ruby
スター
2.3k
フォーク
546
PR マージ指標
30日以内にマージされた PR はありません

説明

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'

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

スタックトレースは jsonapi/resource.rb:538 の verify_filter を指しており、そこで CSV パースが array 値を受け取っています。filter[users][]=1 と filter[users][]=2 を指定してリクエストを再現し、その後 verify_filters と verify_filter を追跡してください。この array 値のフィルターがクラッシュせず、有効なフィルターとして処理されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rails, ruby
領域
api, backend
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。