JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Remove to many issue using mongoid
Personne n'a encore pris cette issue.
- Langage dominant
- Ruby
- Étoiles
- 2.3k
- Forks
- 546
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
I ran into an issue when trying to remove a has_many relationship using mongoid backed models.
The issues comes down to this code:
def _remove_to_many_link(relationship_type, key)
relation_name = self.class._relationships[relationship_type].relation_name(context: @context)
@model.public_send(relation_name).delete(key)
:completed
end
Mongoid defines the delete method on a relationship as follow https://github.com/mongodb/mongoid/blob/v5.1.2/lib/mongoid/relations/referenced/many.rb#L103
I had to override the method definition in my resource like this:
def _remove_to_many_link(relationship_type, key)
relation_name = self.class._relationships[relationship_type].relation_name(context: @context)
relationship = @model.public_send(relation_name)
document = relationship.find(id: key)
relationship.delete(document)
:completed
end
Not a huge deal but it would interesting to find a way to abstract how we delete relationships.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
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.
Piste de recherche
Commencez par _remove_to_many_link et comparez son appel à relationship.delete(key) avec le contrat de suppression des relations referenced-many de Mongoid. Identifiez la limite d’abstraction pour la suppression des relations ; le travail est terminé lorsque la suppression de has_many fonctionne avec Mongoid sans override de ressource, tout en préservant le comportement existant des relations.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- ruby
- Domaine
- api, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100