Defining one callback several times in the same class behaves different in ActiveRecord and ResourceController.
While in ActiveRecord the callbacks are enqueued, they overwrite each other in ResourceController.
ActiveRecord - a common practice
class Post < ActiveRecord::Base
does 'post/behavior'
before_validation :do_something
end
module Post::BehaviorTrait
as_trait do
before_validation :do_something_else
end
end
do_something_else
and do_something
are executed before validation in exactly this order
ResourceController - here you have to be careful
class PostController
include ResourceController::Controller
does 'post_controller/behavior'
index.before { do_something }
end
module PostController::BehaviorTrait
as_trait do
index.before { do_something_else }
end
end
Only do_something
is executed before index because the callback defined in the trait is overwritten.
Posted by Martin Straub to makandra dev (2013-01-31 10:42)