Skip to content

Commit 290eb61

Browse files
committed
added after_validation callback
1 parent b5b6d48 commit 290eb61

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

lib/grape/api.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,10 @@ def route(methods, paths = ['/'], route_options = {}, &block)
299299
def before(&block)
300300
imbue(:befores, [block])
301301
end
302+
303+
def after_validation(&block)
304+
imbue(:after_validations, [block])
305+
end
302306

303307
def after(&block)
304308
imbue(:afters, [block])

lib/grape/endpoint.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ def run(env)
299299
validator.validate!(params)
300300
end
301301

302+
run_filters after_validations
303+
302304
response_text = instance_eval &self.block
303305
run_filters afters
304306
cookies.write(header)
@@ -372,6 +374,7 @@ def run_filters(filters)
372374
end
373375

374376
def befores; aggregate_setting(:befores) end
377+
def after_validations; aggregate_setting(:after_validations) end
375378
def afters; aggregate_setting(:afters) end
376379
end
377380
end

spec/grape/api_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,20 @@ def app; subject end
313313
get '/'
314314
last_response.body.should eql 'first second'
315315
end
316+
317+
it 'should add a after_validation filter' do
318+
subject.after_validation { @foo = "first #{params[:id]}:#{params[:id].class}" }
319+
subject.after_validation { @bar = 'second' }
320+
subject.params do
321+
requires :id, :type => Integer
322+
end
323+
subject.get '/' do
324+
"#{@foo} #{@bar}"
325+
end
326+
327+
get '/', :id => "32"
328+
last_response.body.should eql 'first 32:Fixnum second'
329+
end
316330

317331
it 'should add a after filter' do
318332
m = double('after mock')

0 commit comments

Comments
 (0)