JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Resource interacts with HasOne and HasMany differently
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Ruby
- Sterne
- 2.3k
- Forks
- 546
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
I have a model (User) that I want to expose on an API to a certain class of users. Those users will always have a given permission and expiration, so I want to set those on the server, rather than expose uneditable fields to the client.
class UserResource < JSONAPI::Resource
has_many :permissions
has_one :expiration, foreign_key_on: :related
before_create :add_defaults
def add_defaults
self.permissions << Permission.find_by(title: 'Admin')
self.model.expiration = Expiration.new(date: Date.new(2015,12,30))
end
I think it's odd that I need to call the underlying model in order to interact with has_one objects, and I suspect this is the case for created objects, but I haven't gotten that far yet. Ideally, I could call self.expiration= and I would get behavior similar to self.permissions<<.
Am I just using JSONAPI::Resource incorrectly, or is this something worth pursuing?
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit den Beziehungsdeklarationen von UserResource und seinem before_create-Callback, und vergleichen Sie die Interaktion von has_many permissions mit der Interaktion von has_one expiration. Ermitteln Sie das erwartete Zuweisungs- und Erstellungsverhalten auf Ressourcenebene und überprüfen Sie anschließend mit gezielten Tests, dass die has_one-Behandlung dem angeforderten has_many-ähnlichen Verhalten entspricht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rails, ruby
- Bereich
- api, backend
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100