【发布时间】:2014-10-22 07:18:23
【问题描述】:
我读到有config.action_controller.action_on_unpermitted_parameters = :raise 动作控制器,但我不想运行引发异常。
我需要运行我自己的方法。这是可能的?怎么样?
例如,如果我想登录特殊的 SQL 表 unpermitted_parameters。
【问题讨论】:
标签: ruby-on-rails parameters actioncontroller
我读到有config.action_controller.action_on_unpermitted_parameters = :raise 动作控制器,但我不想运行引发异常。
我需要运行我自己的方法。这是可能的?怎么样?
例如,如果我想登录特殊的 SQL 表 unpermitted_parameters。
【问题讨论】:
标签: ruby-on-rails parameters actioncontroller
根据http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html
这些值可以是 :log 以在记录器上写入消息或 :raise 以引发 ActionController::UnpermittedParameters 异常。默认值为:log in test and development environment,否则为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
您可以添加另一个案例分支并在那里实现您的逻辑。
【讨论】: