如何计算服务年限

时间:2018-03-26 02:01:43

标签: ruby-on-rails ruby ruby-on-rails-4

我有这个问题

1年服务15天

服务3天17天

服务5天20天

服务25天或更长时间

所以提出这个代码,我得到了雇用的一年

这是代码

def year_of_service(date_of_hired)
    years = [1, 3, 5, 10]
    now = Time.now.utc.to_date
    get_year = now.year - date_of_hired.year - ((now.month > date_of_hired.month ||
        (now.month == date_of_hired.month && now.day >= date_of_hired.day)) ? 0 : 1)
  end

我在这里的解决方案是我将使用if语句,但对我来说,这将是一个很长的代码,是否有另一种解决方案,使其简短或其他可能的解决方案

困难在这里我怎么知道'get_year'是否在我的数组之间???

示例:

'get_year'是4怎么知道3年的服务不是5但是4不在数组中

1 个答案:

答案 0 :(得分:2)

您可以使用take_whileselect

y = [1, 3, 5, 10]                                                       

y.take_while { |i| i <= 4 }.max #=> 3
y.select { |i| i <= 4 }.last    #=> 3

但这些涉及收集超过需要的元素。另一种方法是找到符合条件的最后一个元素的索引,然后使用常规数组表示法来获取该元素:

y[y.rindex { |i| i <= 4 }]       #=> 3

您也可以使用find,但这会涉及首先反转数组。目前Ruby中没有rfind