class ParentController < ApplicationController
before_action admin_user, only: [:create, :update]
end
class ChildController < ParentController
before_action admin_user #Also want to add :tweet
def tweet
end
end
在ChildController中我们可以使用
before_action admin_user, only: [:create, :update, :tweet]
但是如果我改变了父亲的before_action中的任何内容,那么它就不会在孩子身上得到更新。
答案 0 :(得分:3)
不幸的是,实现ActiveSupport::Callbacks
的方式不允许将其他操作轻松添加到before filter的配置中。你可以这样做:
class ParentController < ApplicationController
AdminActions = [:create, :update]
before_action :admin_user, only: AdminActions
end
class ChildController < ParentController
before_action :admin_user, only: superclass::AdminActions + [:tweet]
end
答案 1 :(得分:3)
您可以在ChildController内部的块内调用该方法,而不是按名称传递它。这看起来像这样:
class ParentController < ApplicationController
before_action admin_user, only: [:create, :update]
end
class ChildController < ParentController
before_action(only: [:tweet]) { admin_user }
def tweet
end
end