File tree Expand file tree Collapse file tree 2 files changed +27
-17
lines changed Expand file tree Collapse file tree 2 files changed +27
-17
lines changed Original file line number Diff line number Diff line change @@ -410,13 +410,7 @@ def save
410410 end
411411
412412 if last_result_set . has_errors?
413- last_result_set . errors . each do |error |
414- if error . source_parameter
415- errors . add ( self . class . key_formatter . unformat ( error . source_parameter ) , error . title || error . detail )
416- else
417- errors . add ( :base , error . title || error . detail )
418- end
419- end
413+ fill_errors
420414 false
421415 else
422416 self . errors . clear if self . errors
@@ -436,11 +430,12 @@ def save
436430 # @return [Boolean] Whether or not the destroy succeeded
437431 def destroy
438432 self . last_result_set = self . class . requestor . destroy ( self )
439- if !last_result_set . has_errors?
433+ if last_result_set . has_errors?
434+ fill_errors
435+ false
436+ else
440437 self . attributes . clear
441438 true
442- else
443- false
444439 end
445440 end
446441
@@ -504,5 +499,15 @@ def attributes_for_serialization
504499 def relationships_for_serialization
505500 relationships . as_json_api
506501 end
502+
503+ def fill_errors
504+ last_result_set . errors . each do |error |
505+ if error . source_parameter
506+ errors . add ( self . class . key_formatter . unformat ( error . source_parameter ) , error . title || error . detail )
507+ else
508+ errors . add ( :base , error . title || error . detail )
509+ end
510+ end
511+ end
507512 end
508513end
Original file line number Diff line number Diff line change @@ -43,18 +43,23 @@ def test_destroy_failure
4343 assert ( user . persisted? )
4444
4545 stub_request ( :delete , "http://example.com/users/1" )
46- . to_return ( headers : { content_type : "application/json" } , body : {
46+ . to_return ( headers : { content_type : "application/json" } , body : {
4747 data : [ ] ,
48- errors : [ {
49- status : 400 ,
50- errors : [
51- { title : "Some failure message" }
52- ]
53- } ]
48+ errors : [
49+ {
50+ status : 400 ,
51+ title : "Some failure message" ,
52+ source : {
53+ pointer : "/data/attributes/email_address"
54+ }
55+ }
56+ ]
5457 } . to_json )
5558
5659 assert_equal ( false , user . destroy , "failed deletion should return falsy value" )
5760 assert_equal ( true , user . persisted? , "user should still be persisted because destroy failed" )
61+ assert ( user . errors . present? )
62+ assert_equal ( "Some failure message" , user . errors . messages [ :email_address ] . first , "user should contain the errors describing the failure" )
5863 end
5964
6065 def test_callbacks
You can’t perform that action at this time.
0 commit comments