Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是凤凰城';s参数像Rails强参数吗?_Ruby On Rails_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Ruby on rails 是凤凰城';s参数像Rails强参数吗?

Ruby on rails 是凤凰城';s参数像Rails强参数吗?,ruby-on-rails,elixir,phoenix-framework,ecto,Ruby On Rails,Elixir,Phoenix Framework,Ecto,Phoenixscrub_params方法的文档对我来说有点不清楚。看起来这个功能类似于Rails的强参数特性。但是,当您在这样的控制器中使用它时 plug :scrub_params, "user" when action in [:create] 。。。您没有明确说明要将哪些参数列入白名单。我已经看过了scrub_params的代码,但是我对长生不老药还不够了解,所以我不太清楚到底发生了什么 此方法是否只是查看模型,并为白名单参数使用必需的和可选的字段模块属性 另外,scrub_param

Phoenix
scrub_params
方法的文档对我来说有点不清楚。看起来这个功能类似于Rails的强参数特性。但是,当您在这样的控制器中使用它时

plug :scrub_params, "user" when action in [:create]
。。。您没有明确说明要将哪些参数列入白名单。我已经看过了
scrub_params
的代码,但是我对长生不老药还不够了解,所以我不太清楚到底发生了什么

此方法是否只是查看模型,并为白名单参数使用必需的和可选的字段模块属性

另外,
scrub_params
文档中还说它“检查所需的_键是否存在”。什么是“必需的密钥”?这只是模型中的必填字段吗?

该函数实际上不像Rails强参数。在EXTO中,您可以使用在变更集函数中定义允许的键

“清理参数”执行以下操作:

  • 确保所需的密钥存在
  • 使用所需键将参数映射中的空值更改为
    nil
例如,呼叫:

plug scrub_params "user"
将检查是否存在“用户”密钥。发件人:

如果所需的_键不存在,它将引发Phoenix.MissingParamError

如果您有一个如下所示的参数映射:

%{"user" => %{"name" => "foo", "age" => ""}}
然后,“年龄”参数将转换为
nil
。这允许您使用参数直接调用变更集函数:

def create(conn, %{"user" => user_params}) do
  User.changeset(user_params)
end

scrub_params/2
与您的模型完全无关,它只适用于EXTO,因为
EXTO.Changeset.cast/4
函数包含一组必填字段和一组可选字段。将
nil
传递到必填字段将使变更集无效,并为字段添加错误。

感谢您的澄清。这是有道理的。那么,在凤凰城,什么是强情妇的等价物呢?我需要限制用户输入。谢谢你的回答。