我正在尝试将日期与多个条件进行比较,并根据其满足的条件返回特定输出。我不喜欢这些if
和elsif
声明:
def ugly_method
if first_active_entitlement.try(:created_at) == nil
"No timestamp on first active entitlement"
elsif first_active_entitlement == nil
"No Active Entitlement"
elsif last_suspended_entitlement == nil
first_time_or_renewal(first_active_entitlement, start_date, end_date)
elsif first_active_entitlement.try(:created_at) > last_suspended_entitlement.try(:suspended_at) && first_active_entitlement.try(:created_at) > start_date && first_active_entitlement.created_at < end_date
"Restart"
else
first_time_or_renewal(first_active_entitlement, start_date, end_date)
end
有没有人必须将日期与许多不同的条件进行比较?有什么明显的东西比我更容易丢失?
答案 0 :(得分:0)
我会将其分解为多种方法:
first_active_entitlement
last_suspended_entitlement
这些方法可以返回消息,也可以是一个标志来检查对象是否存在。
然后,在您的方法中,如果方法的标志设置为false,您可以显示来自这些方法的消息,如果不是仅执行续订。