我正在尝试以数组的形式从我的数据库中收集数据,所以我使用该inject
方法来获取我的持续时间属性的总和。但是,我无法获得整数数组,因为持续时间是一个函数,而不是一个值。但是当它取决于日期范围时,我不知道如何将其保存为一个值。这是我尝试过的:
在控制台中:
oldman = Employee.first
好的,所以持续时间在这里有效..
oldman.furlough.first.duration
=> 1
和这里...
oldman.furlough.last.duration
=> 4
但是当我尝试使用'all'来获取一个数组时......
oldman.furlough.all.duration
=> NoMethodError: undefined method `duration' for #<Array:0x007fd75651c3d8>
所以我试过...
oldman.furloughs.all(:select => :duration).collect(&:id)
=> [nil, nil]
和...
oldman.furloughs.pluck(:duration)
=> [nil, nil]
这两者都带回了我想要的格式,但没有带回信息。
这是带有持续时间方程的 Furloughs 模型:
class Furlough < ActiveRecord::Base
belongs_to :employee
def only_weekdays(range)
range.select { |d| (1..5).include?(d.wday) }.size
end
def psb_holidays
Holidays.between(date_from, date_to, :us, :observed).size
end
def duration
(only_weekdays(date_from..date_to) - psb_holidays)
end
end