我读到有config.action_controller.action_on_unpermitted_parameters = :raise
操作控制器,但我不想运行引发异常。
我需要运行我自己的方法。有可能吗?怎样
例如,如果我想登录特殊的SQL表unmitted_parameters。
根据http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html
值可以是:log以在记录器上写入消息,也可以是:raise以引发ActionController::UnpermittedParameters异常。默认值为:登录测试和开发环境,否则为false。
所以看起来你不能不重写方法ActionController::Parameters#unpermitted_parameters!
以下是最初的实现:
module ActionController
class Parameters < ActiveSupport::HashWithIndifferentAccess
def unpermitted_parameters!(params)
unpermitted_keys = unpermitted_keys(params)
if unpermitted_keys.any?
case self.class.action_on_unpermitted_parameters
when :log
name = "unpermitted_parameters.action_controller"
ActiveSupport::Notifications.instrument(name, keys: unpermitted_keys)
when :raise
raise ActionController::UnpermittedParameters.new(unpermitted_keys)
end
end
end
end
end
您可以添加另一个case分支,并在那里实现您的逻辑。