在Hash中保存错误排序后的activerecord-postgres-hstore

使用Hstore存储为哈希表,在保存后在哈希中输入错误

class Service  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 

是因为在序列化之后它由Tree命令。 以前任何想法或任何人都遇到过这个问题? 提前致谢。

从精美的PostgreSQL手册 :

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

所以PostgreSQL的hstore类型是一组无序的键/值对,它们不保证键/值对的任何特定顺序。 一旦Ruby Hash转换为hstore,订单就会丢失。

如果您需要在Hash中维护订单,则必须使用不同的序列化格式。