Ruby on rails activerecord postgres在哈希中保存错误排序后存储
使用Hstore存储为哈希表,保存后哈希中的顺序错误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,
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的自定义头/值。然而,读完本文后,我决定将它们存储在两个单独的数组中。