我想这样保存数据:
User.create(name:"Guy", properties:{url:["url1","url2","url3"], street_address:"asdf"})
我可以在Rails 4中这样做吗?到目前为止,我已经尝试了迁移:add_column :users, :properties, :hstore, array: true
但是当我将数组保存在hstore中时,它返回错误:
PG::InvalidTextRepresentation: ERROR: array value must start with "{" or dimension information

最佳答案

hstore用于简单的键/值存储,其中的键和值都是简单的非结构化字符串。从fine manual:



注意最后一句话:hstore中的键和值是字符串。这意味着,如果不进行一些手动操作就无法将数组放入hstore值中,就无法将数组与字符串进行相互转换,并且您真的不想弄乱这种事情。

但是,有一个JSON data type可用:



并且JSON可以轻松处理嵌入式数组和对象。尝试改用JSON:

add_column :users, :properties, :json

不过,您必须先删除旧的hstore列。

另外,您不希望在array: true列上使用hstore,因为您没有存储hstore数组,您只想要其中之一。

关于ruby-on-rails - 我可以使用Rails将数组存储在hstore中吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22306434/

10-16 10:47