在hanami docs之后,为了阻止admin
动作中的参数,我可以使用以下配置:
params do
required(:email).filled
required(:address).schema do
required(:country).filled
end
end
def call(params)
puts params[:email] # => "alice@example.org"
puts params[:address][:country] # => "Italy"
puts params[:admin] # => nil
end
但这不适用于嵌套参数,即:
params do
required(:email).filled
required(:address).schema do
required(:country).filled
end
end
def call(params)
puts params[:email] # => "alice@example.org"
puts params[:address] # => { country: "Italy", admin: true }
puts params[:address][:admin] # => true
end
我能够通过使用select
私有方法过滤掉不需要的参数来解决这个问题,但这似乎不像 Hanami 方式。将嵌套参数列入白名单的正确方法是什么?