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

标签 ruby-on-rails ruby ruby-on-rails-4 active-model-serializers

我有一个用户可以编辑的 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/

相关文章:

ruby-on-rails - 嵌套哈希解释为数组

jquery - 从 Controller 启动模态

ruby-on-rails - Ruby on Rails 教程 : Defining a hash with symbol keys

ruby - ruby 中的适配器模式 : Accessing Your Instance Variables

ruby-on-rails - 多对多:Rails 中的简单与丰富

ruby-on-rails - 完成后如何在循环内检查状态的结果?

ruby-on-rails - 无法卸载 Rails gem

ruby - Chef 错误在资源 `start` 上执行操作 'service[httpd]'

ruby-on-rails-4 - 更改父级:parent_id parameter in Routing resources for Rails4的名称

html - 可以将参数传递给 CSS 类吗?