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)