Skip to content

Commit 84afdfa

Browse files
committed
Allow response code to be overridden by the returned value of resource methods
1 parent 0fd7249 commit 84afdfa

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

lib/jsonapi/operation.rb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ def initialize(resource_klass, options = {})
147147

148148
def apply(context)
149149
resource = @resource_klass.create(context)
150-
resource.replace_fields(@data)
150+
result = resource.replace_fields(@data)
151151

152-
return JSONAPI::ResourceOperationResult.new(:created, resource)
152+
return JSONAPI::ResourceOperationResult.new(result == :default ? :created : :result, resource)
153153

154154
rescue JSONAPI::Exceptions::Error => e
155155
return JSONAPI::ErrorsOperationResult.new(e.errors[0].code, e.errors)
@@ -185,9 +185,9 @@ def initialize(resource_klass, options = {})
185185

186186
def apply(context)
187187
resource = @resource_klass.find_by_key(@resource_id, context: context)
188-
resource.replace_fields(data)
188+
result = resource.replace_fields(data)
189189

190-
return JSONAPI::ResourceOperationResult.new(:ok, resource)
190+
return JSONAPI::ResourceOperationResult.new(result == :default ? :ok : :result, resource)
191191
end
192192
end
193193

@@ -203,9 +203,9 @@ def initialize(resource_klass, options = {})
203203

204204
def apply(context)
205205
resource = @resource_klass.find_by_key(@resource_id, context: context)
206-
resource.replace_has_one_link(@association_type, @key_value)
206+
result = resource.replace_has_one_link(@association_type, @key_value)
207207

208-
return JSONAPI::OperationResult.new(:no_content)
208+
return JSONAPI::OperationResult.new(result == :default ? :no_content : result)
209209
end
210210
end
211211

@@ -221,9 +221,9 @@ def initialize(resource_klass, options)
221221

222222
def apply(context)
223223
resource = @resource_klass.find_by_key(@resource_id, context: context)
224-
resource.create_has_many_links(@association_type, @data)
224+
result = resource.create_has_many_links(@association_type, @data)
225225

226-
return JSONAPI::OperationResult.new(:no_content)
226+
return JSONAPI::OperationResult.new(result == :default ? :no_content : result)
227227
end
228228
end
229229

@@ -239,9 +239,9 @@ def initialize(resource_klass, options)
239239

240240
def apply(context)
241241
resource = @resource_klass.find_by_key(@resource_id, context: context)
242-
resource.replace_has_many_links(@association_type, @data)
242+
result = resource.replace_has_many_links(@association_type, @data)
243243

244-
return JSONAPI::OperationResult.new(:no_content)
244+
return JSONAPI::OperationResult.new(result == :default ? :no_content : result)
245245
end
246246
end
247247

@@ -257,9 +257,9 @@ def initialize(resource_klass, options)
257257

258258
def apply(context)
259259
resource = @resource_klass.find_by_key(@resource_id, context: context)
260-
resource.remove_has_many_link(@association_type, @associated_key)
260+
result = resource.remove_has_many_link(@association_type, @associated_key)
261261

262-
return JSONAPI::OperationResult.new(:no_content)
262+
return JSONAPI::OperationResult.new(result == :default ? :no_content : result)
263263
end
264264
end
265265

@@ -274,9 +274,9 @@ def initialize(resource_klass, options)
274274

275275
def apply(context)
276276
resource = @resource_klass.find_by_key(@resource_id, context: context)
277-
resource.remove_has_one_link(@association_type)
277+
result = resource.remove_has_one_link(@association_type)
278278

279-
return JSONAPI::OperationResult.new(:no_content)
279+
return JSONAPI::OperationResult.new(result == :default ? :no_content : result)
280280
end
281281
end
282282
end

0 commit comments

Comments
 (0)