-
Notifications
You must be signed in to change notification settings - Fork 89
Open
Description
Hey guys - great work with this library!
The JSONAPI spec mentions that error object source pointers can point to a specific attribute, or the "associated entity", per:
source: an object containing references to the source of the error, optionally including any of the following members:
pointer: a JSON Pointer [RFC6901] to the associated entity in the request document [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute].
Often times in our Rails models we do "generic" validations that are usually Ruby versions of SQL uniqueness constraints with some extra logic built-in, e.g.:
class PhoneNumber < ApplicationRecord
...
def only_one_unverified_number_per_user
if user
unverified_excluding_self = user.phone_numbers.unverified.where.not(id: self.id)
if unverified_excluding_self.present?
errors.add(:base, "cannot add another unverified phone number")
end
end
endI think that the behavior of JSONAPI::Serializer.serialize_errors(record.errors) when encountering a "base" error (ie, one produced by doing errors.add(:base, 'something invalid')) should generate a pointer to just /data, the "associated entity" described in the JSONAPI spec.
What do you think? Is there an easy way I could overload the default behavior which sets a pointer of /data/attributes/base?
Metadata
Metadata
Assignees
Labels
No labels