迁移:
class Preference < ActiveRecord::Migration
def change
enable_extension 'hstore'
create_table :preferences do |t|
t.hstore :prefs
end
end
end
型号:
class Preference < ActiveRecord::Base
store_accessor :prefs
end
如果 prefs 是诸如 { email:'yes' }
之类的散列,这似乎有效,但不适用于内部包含数组的散列:{ email:[ 'monday ', '星期二']}
.
拉出哈希时,数组被保存为 JSON。
是否有将 hstore 与嵌套哈希和数组一起使用的好方法?
我确实尝试将 array:true
添加到迁移中,但这似乎只允许保存数组而不是哈希。
如何将 Rails PostgreSQL hstore 与嵌套哈希和数组一起使用?
Rails 4.2.4,PostgreSQL 9.3.5
最佳答案
PostgreSQL hstore 旨在存储文本字符串的键值对。看看 hstore docs .
我使用 JSON 类型将数组存储为散列中的值。有两种 JSON 数据类型:JSON 和 JSONB。 JSONB 支持索引但速度稍慢,而 JSON 不支持索引但速度更快。您可以在这里阅读它们:JSON Type .
我会做以下事情:
class Preference < ActiveRecord::Migration
def change
create_table :preferences do |t|
t.json :prefs
end
end
end
旁注中,在 hstore 列上设置 array: true
意味着您要存储一个 hstores 数组。
关于ruby-on-rails - 如何在 Rails 中使用带有嵌套数组的 PostgreSQL hstore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877386/