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
Elixir 如果存在两个字段,则进行EXTO条件验证_Elixir_Ecto - Fatal编程技术网

Elixir 如果存在两个字段,则进行EXTO条件验证

Elixir 如果存在两个字段,则进行EXTO条件验证,elixir,ecto,Elixir,Ecto,我试图只在模型存在两个字段的情况下对模型进行一些验证 就像这样: if Changeset.get_field(changeset, :field_a) or Changeset.get_field(changeset, :field_b) do changeset |> a_lot_of_validations else changeset end 问题是:当出现字段a或字段b时,它们返回字符串,因此这里会出现参数错误,因为 "string" or "string" 返回

我试图只在模型存在两个字段的情况下对模型进行一些验证

就像这样:

if Changeset.get_field(changeset, :field_a) or Changeset.get_field(changeset, :field_b) do
  changeset
  |> a_lot_of_validations
else
  changeset
end
问题是:当出现
字段a
字段b
时,它们返回
字符串
,因此这里会出现参数错误,因为

"string" or "string"
返回elixir中的argumenterror。实现
not(is_nil(get_字段))
将行长度设置得很长(现在甚至很长),因此我对实现此条件验证的干净方法很好奇。

而不是
not(is_nil(u))
,您只需使用
|
即可,它将
nil
false
视为虚假,将所有其他内容视为真实的
exto.Changeset.get_字段
对于字符串字段永远不会返回
false

if Changeset.get_field(changeset, :field_a) || Changeset.get_field(changeset, :field_b) do
  changeset
  |> a_lot_of_validations
else
  changeset
end
如果您已经导入了
exto.Changeset
(在Phoenix机型中默认情况下导入),则可以删除
变更集。

if get_field(changeset, :field_a) || get_field(changeset, :field_b) do
  changeset
  |> a_lot_of_validations
else
  changeset
end
您可以使用
|
而不是
not(is_nil())
,它将
nil
false
视为虚假,其他一切视为真实的
exto.Changeset.get\u字段对于字符串字段永远不会返回
false

if Changeset.get_field(changeset, :field_a) || Changeset.get_field(changeset, :field_b) do
  changeset
  |> a_lot_of_validations
else
  changeset
end
如果您已经导入了
exto.Changeset
(在Phoenix机型中默认情况下导入),则可以删除
变更集。

if get_field(changeset, :field_a) || get_field(changeset, :field_b) do
  changeset
  |> a_lot_of_validations
else
  changeset
end

我以前不知道这一点。谢谢我以前不知道这一点。谢谢