病気/休暇日と、従業員がいずれかのカテゴリでどれだけ利用できるかを計算するアプリを作成しようとしています。
次のステップは、毎年 1 月に最初にすべての従業員の利用可能な休暇/病欠時間を再計算するメソッドを追加することです (その情報にアクセスする必要があるため、前年のデータをスクラブ/上書きする必要はありません)。
私はEmployee
モデル(以下に掲載):has_many
Furloughs
を持っています(リクエストされない限り投稿しない独自のモデルがありますが、基本的に日付範囲の計算方法を処理します)。
class Employee < ActiveRecord::Base
has_many :furloughs, :dependent => :destroy
def years_employed
(DateTime.now - hire_date).round / 365
end
def vacation_days
if years_employed < 1 && newbie
((12 - hire_date.month) * 0.8).ceil
elsif years_employed <= 6
10
elsif years_employed <= 16
years_employed + 4
else
20
end
end
def newbie
Time.now.year == hire_date.year
end
def sick_days
5.0
end
def vacation_days_used
self.furloughs.collect(&:vacation_duration).inject(0) { | memo, n | memo + n }
end
def sick_days_used
self.furloughs.collect(&:sick_duration).inject(0) { | memo, n | memo + n }
end
def remaining_vacation_days
vacation_days - vacation_days_used
end
def remaining_sick_days
sick_days - sick_days_used
end
end
1 月 1 日に、vacation/sick_days およびvacation/sick_days_used メソッドをリセットする必要があり、その後、次のようなロールオーバー メソッドも追加する必要があります。
def rollover
if some_method_determining_last_year(remaining_vacation_days) >= 2
2
else
remaining_vacation_days
end
end
新しく計算された合計にも追加する必要があります。これにどのようにアプローチすべきかについての考えをいただければ幸いです。