0

従業員がどれくらいの休暇を取得できるかを判断するために、従業員が雇用されている期間を計算する式を作成しようとしています。新規採用者は 10 日、6 年間の雇用の後、1 年に 1 日余分に与えられ、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

あなたは目的を望んでいません、あなたはそれ以外を望んでいますnil。だいたい:

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 に答える