gpt4 book ai didi

ruby-on-rails - 可以将时间戳存储为哈希中的键并使其可排序吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:13 25 4
gpt4 key购买 nike

我有一个用户可以编辑的 Comment 模型。我想保存评论的每个新版本,以及它在 Facebook 中的运作方式。

我没有使用关联模型为每个新提交的编辑创建新记录,而是考虑使用 Active Model 的 Serialization并为每个新编辑插入一个哈希键/值对。

提交的文本将是值(value),编辑的时间将是关键。

是否可以将 DateTime 值保存为键,然后能够按键按时间顺序对哈希进行排序?如果是肯定的,我将如何创建 key ?

最佳答案

我同意关于它很奇怪的评论,但是是的,它可以在 Ruby 中完成。你可以设置一个 Time对象作为散列的键,如下所示:

hash = {}
hash[Time.now] = 'value'
hash
#=> {2015-09-30 11:45:41 -0500=>1}

如果您的时间被初始化为字符串,您可以使用以下方法将其解析为 Time 对象:

Time.parse("12:00")
#=> 2015-09-30 12:00:00 -0500

最后,Ruby 中的哈希从 1.8 或 1.9 版本开始保持顺序,但不可排序,因此您可以使用 Hash#keys 和然后对键进行排序:

hash = {}
hash[Time.now] = 'value'
hash[Time.now] = 'value2'
hash[Time.now] = 'value3'
hash[Time.now] = 'value4'
hash[Time.now] = 'value5'
hash
#=> {
2015-09-30 11:50:17 -0500=>"value",
2015-09-30 11:50:18 -0500=>"value2",
2015-09-30 12:04:05 -0500=>"value3",
2015-09-30 12:04:04 -0500=>"value4",
2015-09-30 12:04:06 -0500=>"value5",
}

hash.keys
#=> [
2015-09-30 11:50:17 -0500
2015-09-30 11:50:18 -0500,
2015-09-30 12:04:05 -0500,
2015-09-30 12:04:04 -0500,
2015-09-30 12:04:06 -0500,
]

shuffled_keys = hash.keys.shuffle
#=> [
2015-09-30 12:04:04 -0500,
2015-09-30 12:04:06 -0500,
2015-09-30 11:50:18 -0500,
2015-09-30 12:04:05 -0500,
2015-09-30 11:50:17 -0500
]

latest_key = shuffled_keys.sort.last
#=> 2015-09-30 12:04:06 -0500

hash[latest_key]
#=> "value5"

关于ruby-on-rails - 可以将时间戳存储为哈希中的键并使其可排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32867502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com