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
end
I 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?
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:
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.:
I think that the behavior of
JSONAPI::Serializer.serialize_errors(record.errors)when encountering a "base" error (ie, one produced by doingerrors.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?