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)
这不起作用,因为 from
和 to
来自上面的数据结构,而我的数据库中没有这样的列。我在我的模型中设置了适当的关联,我可以做到 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
希望这对您有所帮助
我有一个名为 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)
这不起作用,因为 from
和 to
来自上面的数据结构,而我的数据库中没有这样的列。我在我的模型中设置了适当的关联,我可以做到 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
希望这对您有所帮助