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

Ruby on rails Rails 5.1.:从关联中获取每个日期时间间隔的记录,ruby-on-rails,datetime,rails-activerecord,ruby-on-rails-5.1,Ruby On Rails,Datetime,Rails Activerecord,Ruby On Rails 5.1,我有一个名为Task的模型,它的方法日期为我提供了这个输出,它可以是不同的和多个日期时间间隔: [{: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,其中对于每个任务,我希望获得相应的inventory

我有一个名为Task的模型,它的方法日期为我提供了这个输出,它可以是不同的和多个日期时间间隔:

[{: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,其中对于每个任务,我希望获得相应的inventory模型记录

目前,我正在尝试这样做:

self.inventories.where(date: self.from..self.to)
这不起作用,因为from和to来自上面的数据结构,我的数据库中没有这样的列。我已经在我的模型中设置了适当的关联,我可以进行自我盘点


请问,有没有一种方法可以通过Rails查询来获取每个日期间隔的匹配记录?谢谢。

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

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
并确保使用展平,因为它将嵌套在数组中

库存下降


希望这能有所帮助

谢谢,它似乎起作用了。我相信你的意思是inventory.flatte必须用于结果数据,对吗?是的,你需要使用flatte删除嵌套数组