Clearing polymorphic relationship by sending null data with PATCH is broken again
Personne n'a encore pris cette issue.
- #1083 par @valscion — fermée sans fusion
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez dans lib/jsonapi/request_parser.rb, à parse_update_relationship_operation, et comparez la régression avec l’issue #656 et le commit a232243f5e1e4a24cd9bb87406c5a229326e7ea2. Reproduisez la requête PATCH de relation avec une association polymorphe et null data ; c’est terminé lorsque la suppression ne provoque plus d’undefined-method error et qu’un test de régression la couvre.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- 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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JSONAPI-Resources/jsonapi-resources
-
Fix incorrect translation key for parameter_not_allowed.detailPeut-être pris @pozzer l’a pris il y a 596 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
ArgumentError with Rails 8.1Peut-être pris @SAY-5 l’a pris il y a 53 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 50/100
JSONAPI-Resources/jsonapi-resources#1488 · 1 commentaire ·
-
Rails 8.1: jsonapi_resources DSL fails to generate relationship routes due to Resource#initialize signature changePeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
JSONAPI-Resources/jsonapi-resources#1479 · 2 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
JSONAPI-Resources/jsonapi-resources#1477 · 3 commentaires · 1 réaction ·
-
Fields filtering with includeOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
Toutes les issues de JSONAPI-Resources/jsonapi-resources
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
:bank: debt
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
cucumber/cucumber-ruby-core#346 · 1 commentaire ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
TheOdinProject/curriculum#31467 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
message-patterns
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
sisimai/rb-sisimai#468 ·