Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails activerecord postgres在哈希中保存错误排序后存储_Ruby On Rails_Postgresql_Serialization_Rails Activerecord_Hstore - Fatal编程技术网

Ruby on rails activerecord postgres在哈希中保存错误排序后存储

Ruby on rails activerecord postgres在哈希中保存错误排序后存储,ruby-on-rails,postgresql,serialization,rails-activerecord,hstore,Ruby On Rails,Postgresql,Serialization,Rails Activerecord,Hstore,使用Hstore存储为哈希表,保存后哈希中的顺序错误 class Service < ActiveRecord::Base serialize :properties, ActiveRecord::Coders::Hstore end service = Service.new service.properties = { "aaa" => 1, "zz" => 2, "cc" => 3, "d" => 4 } #=> { "aaa" => 1,

使用Hstore存储为哈希表,保存后哈希中的顺序错误

class Service < ActiveRecord::Base
  serialize :properties, ActiveRecord::Coders::Hstore
end

service = Service.new
service.properties = { "aaa" => 1, "zz" => 2, "cc" => 3, "d" => 4 }
#=> { "aaa" => 1, "zz" => 2, "cc" => 3, "d" => 4 }
service.save
reload!
service = Service.find(:id)
service.properties
#=> { "d" => "4", "cc" => "3", "zz" => 2, "aaa" => 1 }
Bug::: wrong ordering after save
类服务1,“zz”=>2,“cc”=>3,“d”=>4}
#=>{“aaa”=>1,“zz”=>2,“cc”=>3,“d”=>4}
服务。保存
重新加载
service=service.find(:id)
服务属性
#=>{“d”=>“4”,“cc”=>“3”,“zz”=>2,“aaa”=>1}
错误:::保存后顺序错误
是因为序列化后它按树排序。以前有没有人或想法遇到过这个问题?提前感谢。

来自:

F.16。hstore
[…]
此模块实现hstore数据类型,用于在单个PostgreSQL值中存储密钥/值对集。
[…]
成对的顺序不重要(输出时可能不会再现)

因此,PostgreSQL的hstore类型是一组无序的键/值对,不保证键/值对的任何特定顺序。一旦您的Ruby哈希被转换为hstore,排序就会丢失

如果需要维护哈希中的顺序,则必须使用不同的序列化格式。

来自:

F.16。hstore
[…]
此模块实现hstore数据类型,用于在单个PostgreSQL值中存储密钥/值对集。
[…]
成对的顺序不重要(输出时可能不会再现)

因此,PostgreSQL的hstore类型是一组无序的键/值对,不保证键/值对的任何特定顺序。一旦您的Ruby哈希被转换为hstore,排序就会丢失


如果需要维护哈希中的顺序,则必须使用不同的序列化格式。

我试图使用Hstore存储我创建的csv的自定义标题/值。然而,读了这篇文章后,我决定将它们存储在两个单独的数组中。我试图使用Hstore来存储我正在创建的csv的自定义头/值。然而,读完本文后,我决定将它们存储在两个单独的数组中。