我想这样保存数据: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/