Rails、PostgreSQL 和 hstore

Rails, PostgreSQL and hstore

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

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

The order of the [hstore] pairs is not significant (and may not be reproduced on output)

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