我正在检查相关表中的值是否在我看来经常存在,在这种情况下,费用已获得批准。如果它们尚未提交,则批准表中没有它们的记录。
我最终得到了一些非常尴尬的代码
<% if !expense_item.expense_approval || expense_item.expense_approval.approval_status == 0 %>
有没有办法对一个值做一个 if 语句,而不必先检查它是否存在?或者一些默认的方式来设置它为零?
我正在检查相关表中的值是否在我看来经常存在,在这种情况下,费用已获得批准。如果它们尚未提交,则批准表中没有它们的记录。
我最终得到了一些非常尴尬的代码
<% if !expense_item.expense_approval || expense_item.expense_approval.approval_status == 0 %>
有没有办法对一个值做一个 if 语句,而不必先检查它是否存在?或者一些默认的方式来设置它为零?
您可以在ExpenseItem
模型中执行以下操作:
delegate :approval_status, :to => :expense_approval, :allow_nil => true
这应该允许您简单地执行以下操作:
if expense_item.approval_status == 0
上面的 try 方法当然有效,但我更喜欢委托,因为我不必拥有.try(...)
所有代码。
您可以使用 try 方法,如果传递的方法不存在,该方法将返回 nil。所以你可以做类似的事情:
expense_item.expense_approval.try(:approval_status) == 0