Ruby on rails Rails 5.1.:从关联中获取每个日期时间间隔的记录
我有一个名为Task的模型,它的方法日期为我提供了这个输出,它可以是不同的和多个日期时间间隔: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
[{: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删除嵌套数组