Rails 5.1.: 从关联获取每个日期时间间隔的记录

Rails 5.1.: get records from association for each datetime interval

我有一个名为 Task 的模型,方法是 dates,它给了我这个输出(它可以是不同的和多个 DateTime 间隔):

[{:from=>2017-09-04 00:00:00 +0300, :to=>2017-09-04 05:59:59 +0300},
 {:from=>2017-09-05 12:00:00 +0300, :to=>2017-09-05 19:59:59 +0300}

然后在同一个模型中有另一种方法inventory,其中每个task我想得到相应的Inventory模型记录。

目前我正在尝试做这样的事情:

self.inventories.where(date: self.from..self.to)

这不起作用,因为 fromto 来自上面的数据结构,而我的数据库中没有这样的列。我在我的模型中设置了适当的关联,我可以做到 self.inventories.

有没有办法进行 Rails 查询,以便为我的每个 dates 间隔获取匹配记录?谢谢。

如果您询问如何访问数组中的数据,您可以遍历每个数据。

def self.dates
  #generate intervals as array of hashes
end

def self.inventories
  [].tap do |inventories|
    dates.each do |date|
      from = date[:from]
      to = date[:to]
      inventories << self.inventories.where(date: from..to)
    end
  end
end

并确保使用#flatten,因为它将嵌套在数组中

inventories.flatten

希望这对您有所帮助