JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Dealing with strong parameters with nested hash in JR

Offen
#1,029 4 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Not sure how to deal with this strong parameters issue in a JSONAPI::ResourceController.

I have a simple User model with settings field that is stored in Postgres as a jsonb field type. The resource looks like this:

class API::V1::UserResource < JSONAPI::Resource
  key_type :uuid

  attributes :username, :email, :first_name, :last_name, :roles
  attribute :settings

  def roles
    @model.roles.to_a
  end
end

This serializes out just fine, but trying to PATCH with something like the body below:

{
  "data": {
    "id": "776c526a-6b5f-4839-998e-591d3043645d",
    "type": "users",
    "attributes": {
      "settings": {
        "color": "blue"
      }
    }
  }
}

If config.raise_if_parameters_not_allowed = false then I get this stored in the database:

"--- !ruby/object:ActionController::Parameters\nparameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess\n  color: blue\npermitted: false\n"

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 der Strong-Parameter-Verarbeitung von JSONAPI::ResourceController und stelle die PATCH-Anfrage für das jsonb-Einstellungsfeld der Ressource User nach. Der Fix ist abgeschlossen, wenn verschachtelte Einstellungen als JSON-Daten statt als serialisiertes ActionController::Parameters-Objekt gespeichert werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
postgresql, rails, ruby
Bereich
api, backend, database
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.