我在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]. 我可以做些什么來將此嵌套屬性傳遞給我的函式,還是有完全不同的方法?謝謝
uj5u.com熱心網友回復:
Rails 驗證通常屬于模型。您應該發布一些有關您正在嘗試做的事情的附加資訊。例如,如果您想在控制器中運行驗證,因為這些驗證只應在特定背景關系中運行(即,僅當從該特定端點與此資源互動時),請使用on:定義自定義背景關系。
如果您不想以 rails 方式做事(您應該這樣做,imo),那么不要在方法主體中呼叫 params。IE
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的方式去做,你以后會感謝自己的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465418.html
