Ruby on rails 是凤凰城';s参数像Rails强参数吗?
PhoenixRuby 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
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
传递到必填字段将使变更集无效,并为字段添加错误。感谢您的澄清。这是有道理的。那么,在凤凰城,什么是强情妇的等价物呢?我需要限制用户输入。谢谢你的回答。