我正在尝试编写一个应用程序来计算病假/休假天数以及员工在任一类别中的可用时间。
下一步是添加一种方法,该方法每年 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方法需要重置,然后我还需要添加一个rollover方法,比如
def rollover
if some_method_determining_last_year(remaining_vacation_days) >= 2
2
else
remaining_vacation_days
end
end
这也需要添加到新计算的总数中。我很感激任何关于我应该如何处理这个问题的想法。