JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Resource interacts with HasOne and HasMany differently
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 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?
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 les déclarations de relations de UserResource et son callback before_create, en comparant l’interaction de has_many permissions avec celle de has_one expiration. Déterminez le comportement attendu d’affectation et de création au niveau de la ressource, puis vérifiez à l’aide de tests ciblés que la gestion de has_one correspond au comportement demandé, similaire à has_many.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rails, ruby
- Domaine
- api, backend
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100