是否可以将散列的嵌套 属性 传递给 ruby 中的函数
Is it possible to pass a nested property of a hash to function in ruby
我在 rails 控制器中有这个功能:
def validate_params(*props)
props.each do |prop|
unless params[prop].start_with?('abc')
# return error
end
end
end
我在想如果我有 params[:name] 和 params[:bio] 并且我想用这个函数验证 name 和 bio(不是我可能想要验证的每个属性),我会用 validate_params(:name, :bio)
。但是,对于嵌套参数,它不会像 params[:user][:name]
那样工作。我能做些什么来将这个嵌套的 属性 传递给我的函数,还是有完全不同的方法?谢谢
Rails Validations generally belong in the model. You should post some additional info about what you're trying to do. For example, if you wanted to run the validation in the controller because these validations should only run in a certain context (i.e., only when this resource is interacted with from this specific endpoint), use on: 定义自定义上下文。
如果您不想以 rails 方式做事(在我看来,您应该这样做),则不要在方法主体中调用参数。即
def validate_params(*args)
args.each do |arg|
unless arg.start_with?('abc')
# return error
end
end
end
并用 validate_params(params[:user], params[:user][:name]
调用
但是是的...按照 rails 的方式去做,您稍后会感谢自己的。
我在 rails 控制器中有这个功能:
def validate_params(*props)
props.each do |prop|
unless params[prop].start_with?('abc')
# return error
end
end
end
我在想如果我有 params[:name] 和 params[:bio] 并且我想用这个函数验证 name 和 bio(不是我可能想要验证的每个属性),我会用 validate_params(:name, :bio)
。但是,对于嵌套参数,它不会像 params[:user][:name]
那样工作。我能做些什么来将这个嵌套的 属性 传递给我的函数,还是有完全不同的方法?谢谢
Rails Validations generally belong in the model. You should post some additional info about what you're trying to do. For example, if you wanted to run the validation in the controller because these validations should only run in a certain context (i.e., only when this resource is interacted with from this specific endpoint), use on: 定义自定义上下文。
如果您不想以 rails 方式做事(在我看来,您应该这样做),则不要在方法主体中调用参数。即
def validate_params(*args)
args.each do |arg|
unless arg.start_with?('abc')
# return error
end
end
end
并用 validate_params(params[:user], params[:user][:name]
但是是的...按照 rails 的方式去做,您稍后会感谢自己的。