Skip to content

Commit 65f52f1

Browse files
author
Lee Richmond
committed
Fix 0.6 compat
1 parent a6c9e32 commit 65f52f1

File tree

4 files changed

+19
-15
lines changed

4 files changed

+19
-15
lines changed

lib/jsonapi_errorable.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require 'jsonapi_errorable/version'
44
require 'jsonapi_errorable/exception_handler'
55
require 'jsonapi_errorable/validatable'
6-
require 'jsonapi_errorable/serializers/serializable_validation'
6+
require 'jsonapi_errorable/serializers/validation'
77

88
module JsonapiErrorable
99
def self.included(klass)

lib/jsonapi_errorable/serializers/serializable_validation.rb renamed to lib/jsonapi_errorable/serializers/validation.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
module JsonapiErrorable
22
module Serializers
3-
class SerializableValidation < JSONAPI::Serializable::Resource
4-
type :validation_errors
3+
class Validation
4+
attr_reader :object
55

6-
attribute :errors do
7-
@object.errors.to_hash.map do |attribute, messages|
6+
def initialize(object)
7+
@object = object
8+
end
9+
10+
def errors
11+
object.errors.to_hash.map do |attribute, messages|
812
messages.map do |message|
913
{
1014
code: 'unprocessable_entity',
1115
status: '422',
1216
title: 'Validation Error',
1317
detail: "#{attribute.capitalize} #{message}",
14-
source: { pointer: pointer_for(@object, attribute) },
18+
source: { pointer: pointer_for(object, attribute) },
1519
meta: { attribute: attribute, message: message }
1620
}
1721
end
@@ -21,12 +25,12 @@ class SerializableValidation < JSONAPI::Serializable::Resource
2125
def relationship?(name)
2226
return false unless activerecord?
2327

24-
relation_names = @object.class.reflect_on_all_associations.map(&:name)
28+
relation_names = object.class.reflect_on_all_associations.map(&:name)
2529
relation_names.include?(name)
2630
end
2731

2832
def attribute?(name)
29-
@object.respond_to?(name)
33+
object.respond_to?(name)
3034
end
3135

3236
private

lib/jsonapi_errorable/validatable.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module JsonapiErrorable
22
module Validatable
33
def render_errors_for(record)
4+
validation = Serializers::Validation.new(record)
5+
46
render \
5-
json: record,
6-
status: :unprocessable_entity,
7-
serializer: Serializers::SerializableValidation,
8-
adapter: :attributes
7+
json: validation.errors,
8+
status: :unprocessable_entity
99
end
1010
end
1111
end

spec/serializers/serializable_validation_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
require 'spec_helper'
22

3-
RSpec.describe JsonapiErrorable::Serializers::SerializableValidation do
3+
RSpec.describe JsonapiErrorable::Serializers::Validation do
44
let(:errors_hash) { { username: ["can't be blank"] } }
55

66
let(:object) { double(id: 123).as_null_object }
7-
let(:instance) { described_class.new(object: object) }
7+
let(:instance) { described_class.new(object) }
88

99
before do
1010
allow(instance).to receive(:activerecord?) { true }
@@ -15,7 +15,7 @@
1515
end
1616

1717
describe '#errors' do
18-
subject { instance.as_jsonapi[:attributes][:errors] }
18+
subject { instance.errors }
1919

2020
before do
2121
allow(object).to receive(:respond_to?).with(:username) { true }

0 commit comments

Comments
 (0)