JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Resource interacts with HasOne and HasMany differently

Ouverte
#479 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Type: Enhancement
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.