【发布时间】: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"=>"1", "3"=>"3", "2"=>"2"} 添加到 PostgreSql (9.4) 的 hstore 列中(通过 rails 5} ,这个哈希将在 hstore 列下重新排序,看起来像这样:{“1”=>“1”,“2”=>“2”,“3”=>“3”}。是否可以防止这种情况?
【问题讨论】:
标签: ruby-on-rails postgresql hstore
Ruby 中保证哈希顺序。我假设因为它离开 Ruby 并进入数据库,所以您不再得到保证。我不认为 postgres 保留了source 的顺序:
[hstore] 对的顺序不重要(并且可能不会在输出中重现)
如果您真的希望保留订单,我认为您不走运。如果您希望顺序相同,那么您应该以已知的方式对 Ruby 哈希进行排序,然后以相同的方式对 SQL 进行排序。我相信有一种方法可以按键对 hstore 列进行排序:Order by a value of an arbitrary attribute in hstore
【讨论】: