【问题标题】:Rails, PostgreSQL and hstoreRails、PostgreSQL 和 hstore
【发布时间】:2026-01-21 00:00:01
【问题描述】:

如果我将此哈希值 {"1"=>​​"1", "3"=>"3", "2"=>"2"} 添加到 PostgreSql (9.4) 的 hstore 列中(通过 rails 5} ,这个哈希将在 hstore 列下重新排序,看起来像这样:{“1”=>“1”,“2”=>“2”,“3”=>“3”}。是否可以防止这种情况?

【问题讨论】:

    标签: ruby-on-rails postgresql hstore


    【解决方案1】:

    Ruby 中保证哈希顺序。我假设因为它离开 Ruby 并进入数据库,所以您不再得到保证。我不认为 postgres 保留了source 的顺序:

    [hstore] 对的顺序不重要(并且可能不会在输出中重现)

    如果您真的希望保留订单,我认为您不走运。如果您希望顺序相同,那么您应该以已知的方式对 Ruby 哈希进行排序,然后以相同的方式对 SQL 进行排序。我相信有一种方法可以按键对 hstore 列进行排序:Order by a value of an arbitrary attribute in hstore

    【讨论】: