"john", "password"-6ren">
gpt4 book ai didi

ruby-on-rails - 如何使用 permit 或 require 过滤 params hash 中的键?

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:19 29 4
gpt4 key购买 nike

我有一个 Controller ,它需要一个具有以下键的散列:

{:username,:password,:age}
params = {"username"=>"john", "password"=>"secret"}

paramsActionController::Parameters 类的一个对象。现在 Controller 应该给出错误“:age”参数丢失。 我如何在 Rails 中使用 require/permit 来做到这一点?或者除了 strong_parameters 之外,还有其他更好的方法来验证 Rails 中的输入参数吗?

最佳答案

我会在您的模型中使用简单的验证方法来完成。像这样:

validates :age, presence: true, allow_blank: false

您还应该在 Controller 的 strong_parameters 方法中允许 :age。正如 Mohammed 所指出的,这将需要这样的东西:

params.require(:user).permit(:name, :password, :age)

但这与验证无关。它只是将用户通过表单提供的参数列入白名单,以防止在创建或更新模型时在批量分配属性时发生某些类型的攻击。<​​/p>

一旦您的参数被列入白名单,您的验证回调将在创建或保存新对象之前启动。如果属性“age”缺失或为 nil,则之前的方法将给出验证错误,您可以在 @user.errors.messages 或模型的任何名称中阅读该错误。这样,除非 :age 不为空,否则您的对象将不会被保存。

希望这对您有所帮助。

关于ruby-on-rails - 如何使用 permit 或 require 过滤 params hash 中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29968808/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com