Ruby 计数方法:使用日期键评估哈希值

问题描述 投票:0回答:1

在用Minitest测试rails方法时,有以下语句

Available.all.reload.pluck(:date).tally

返回以下哈希值

{Sat, 08 Jun 2024=>2, Tue, 25 Jun 2024=>12, Sun, 07 Jul 2024=>11}

正在尝试的断言是在数据转换后,验证日期键的值

2024-07-07
== 11。
以下假设散列键是
Time
的实例,则返回 false;
语句中或将其转换为控制台时存在日期输入问题。

new_date = DateTime.new(2024,7,8,0,0,0).to_time
assert Available.all.reload.pluck(:date).tally.include?({new_date=>11})

这应该怎么写?

ruby-on-rails ruby minitest
1个回答
0
投票

我首先推荐的是

Available.all.reload.pluck(:date).tally

相当于

Available.group(:date).count

这将计数转移到数据库并避免创建中间处置的

Array

其次,您可以使用

Date
创建一个
Date.new(2024,7,7)
对象。

由于我们使用

Hash
进行比较,我会选择

Available.group(:date).count[Date.new(2024,7,7)] == 11

也就是说,如果目标始终是单个

Date
并且
Hash
不是必需的,那么这样的方法可能会更有效:

Available.where(date: Date.new(2024,7,7)).count == 11
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.