我正在尝试编写一个等式,计算雇员被雇用的时间,以确定他们有多少休假时间。新员工获得10分,经过六年的工作,他们每年额外增加一天,额外增加10天(第16年)。这些方程中的一些单独工作,但它们不能一起工作。所以我认为我遇到了语法问题。
undefined method `-' for nil:NilClass
vacation_days部分正在破坏我的应用程序。
class Employee < ActiveRecord::Base
def years_employed
(DateTime.now - hire_date).round / 365
end
def vacation_days
if years_employed <= 6
10
end
if years_employed > 6
(years_employed.to_i - 6) + 10
end
if years_employed > 16
(years_employed * 0) + 20
end
end
端
另外,如果您对更好的方法有任何建议,请指导我!
答案 0 :(得分:2)
你不想要结束,你想要别的,否则它会继续评估 - 所以你有时会回归nil
。大致是:
def vacation_days
if years_employed <= 6
10
elsif years_employed <= 16
years_employed + 4
else
20
end
end
答案 1 :(得分:1)
作为替代方案,您可以使用case语句和范围
def vacation_days
case years_employed
when 0..6 then 10
when 7..16 then years_employed+4
else 20
end
end