gpt4 book ai didi

ruby-on-rails - 我可以使用 Rails 将数组存储在 hstore 中吗

转载 作者:行者123 更新时间:2023-11-29 11:09:08 25 4
gpt4 key购买 nike

我想这样保存数据:

User.create(name:"Guy", properties:{url:["url1","url2","url3"], street_address:"asdf"})

我可以在 Rails 4 中这样做吗?到目前为止,我已经尝试过迁移:add_column :users, :properties, :hstore, array: true

但是当我将数组保存在 hstore 中时,它返回错误:

PG::InvalidTextRepresentation:错误:数组值必须以“{”或维度信息开头

最佳答案

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

F.16. hstore

This module implements the store data type for storing sets of key/value pairs within a single PostgreSQL value. [...] Keys and values are simply text strings.

注意最后一句:hstore中的键和值都是字符串。这意味着您不能将数组放入 hstore 值中,而无需一些操作来将数组与字符串相互转换,您真的不想搞乱这种事情。

然而,有一个JSON data type可用:

8.14. JSON Type

The json data type can be used to store JSON (JavaScript Object Notation) data, as specified in RFC 4627.

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

add_column :users, :properties, :json

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com