Clearing polymorphic relationship by sending null data with PATCH is broken again
Dieses Issue hat noch niemand übernommen.
- #1083 von @valscion — ohne Merge geschlossen
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne in lib/jsonapi/request_parser.rb bei parse_update_relationship_operation und vergleiche die Regression mit Issue #656 und Commit a232243f5e1e4a24cd9bb87406c5a229326e7ea2. Reproduziere die PATCH-Beziehungsanfrage mit einer polymorphen Association und null data; abgeschlossen ist die Aufgabe, wenn das Entfernen keinen undefined-method error mehr auslöst und ein Regressionstest dies abdeckt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
The original issue #656 seems to have regressed, as the same error is now raised for a polymorphic association removal.
Started PATCH "/tags/830926030/relationships/taggable" for 127.0.0.1 at 2017-07-05 11:33:31 +0300
Processing by TagsController#update_relationship as HTML
Parameters: {"data"=>nil, "relationship"=>"taggable", "tag_id"=>"830926030"}
Internal Server Error: undefined method `[]' for nil:NilClass /Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/request_parser.rb:594:in `parse_update_relationship_operation'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/request_parser.rb:133:in `parse_modify_relationship_action'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/request_parser.rb:98:in `setup_update_relationship_action'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/request_parser.rb:38:in `setup_action'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/request_parser.rb:27:in `initialize'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/acts_as_resource_controller.rb:66:in `new'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/acts_as_resource_controller.rb:66:in `process_request'
/Users/vesa/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/jsonapi-resources-0.9.0/lib/jsonapi/acts_as_resource_controller.rb:39:in `update_relationship'
The regression seems to stem from this commit a232243f5e1e4a24cd9bb87406c5a229326e7ea2 where operations were reworked to use an operation dispatcher and operation processors.
if relationship.is_a?(JSONAPI::Relationship::ToOne)
if relationship.polymorphic?
- operation_args[1].merge!(
- key_value: verified_params[:to_one].values[0] && verified_params[:to_one].values[0][:id],
- key_type: verified_params[:to_one].values[0] && verified_params[:to_one].values[0][:type]
- )
+ options[:key_value] = verified_params[:to_one].values[0][:id]
+ options[:key_type] = verified_params[:to_one].values[0][:type]
I am not sure how to add tests to ensure this issue does not regress again. Any pointers on how you'd like to have such tests would be nice.
I discovered this issue as I'm adding special handling to jsonapi-authorization gem: https://github.com/venuu/jsonapi-authorization/pull/75
- Vorherrschende Sprache
- Ruby
- Sterne
- 2.3k
- Forks
- 547
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus JSONAPI-Resources/jsonapi-resources
-
Fix incorrect translation key for parameter_not_allowed.detailEvtl. vergeben @pozzer hat das vor 595 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
ArgumentError with Rails 8.1Evtl. vergeben @SAY-5 hat das vor 52 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 50/100
JSONAPI-Resources/jsonapi-resources#1488 · 1 Kommentar ·
-
Rails 8.1: jsonapi_resources DSL fails to generate relationship routes due to Resource#initialize signature changeEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 42/100
JSONAPI-Resources/jsonapi-resources#1479 · 2 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
JSONAPI-Resources/jsonapi-resources#1477 · 3 Kommentare · 1 Reaktion ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
Alle Issues in JSONAPI-Resources/jsonapi-resources
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 7 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
Maintainer antworten meist innerhalb von 7 Tagen
-
bugsnag
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
JoeMcB/improvcoaches#827 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
TheOdinProject/curriculum#31465 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area: docs eco: ruby good first issue help wanted lane: free-agent roadmap size: XS type: docs
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 66/100
arminazimi/evergreen#465 ·
Maintainer antworten meist innerhalb von 1 Tag