JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Remove to many issue using mongoid

Offen
#724 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

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.

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

Beginne bei _remove_to_many_link und vergleiche den Aufruf relationship.delete(key) mit Mongoids Löschvertrag für Referenced-Many-Beziehungen. Identifiziere die Abstraktionsgrenze für das Löschen von Beziehungen; abgeschlossen ist die Aufgabe, wenn das Entfernen von has_many mit Mongoid ohne einen Ressourcen-Override funktioniert, während das bestehende Verhalten von Beziehungen erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
ruby
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 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.