0

我正在尝试编写一个公式来计算员工被雇用的时间,以确定他们有资格获得多少假期。新员工获得 10 天,在工作 6 年后,他们每年获得额外的一天,上限为 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

结尾

另外,如果您对解决此问题的更好方法有任何建议,请指导我!

4

2 回答 2

2

You don't want ends, you want elses, otherwise it's going to keep evaluating–so you were returning nil sometimes. Roughly:

def vacation_days
   if years_employed <= 6
     10
   elsif years_employed <= 16
     years_employed + 4
   else
     20  
   end
end
于 2013-05-07T21:40:19.590 回答
1

作为替代方案,您可以使用 case 语句和范围

 def vacation_days
    case years_employed
      when 0..6 then 10
      when 7..16 then years_employed+4
      else 20
   end
 end
于 2013-05-09T15:09:44.843 回答