我有一个必须使用电话号码设置的变量,最好使用表A中的值。如果该值为空,则应该是表B中的值(与表A相关)。如果它也是空的,那么它应该是表B上另一列的值。最后,如果所有这些都是空的,则应该将其设置为字符串。
我尝试用or
s:
telefone = a.telefone || a.associado_contato.first.telefone || a.associado_contato.first.celular || "não cadastrado"
但结果是a.telefone
(第一个选项),即使它是空白的。
我想避免嵌套if
。有这种情况的简单解决方案吗?
答案 0 :(得分:2)
问题是,即使是空的String也是红宝石的真相。因此"" || "1234"
为""
。
使用Rails,您可以使用presence
:
"".presence || "1234" # => "1234"
"567".presence || "1234" # => "567"
所以你的代码可能变成:
telefone = a.telefone.presence || a.associado_contato.first.telefone.presence || a.associado_contato.first.celular.presence || "não cadastrado"
假设a.associado_contato
已定义且至少有一个元素。