Fel*_*ger 10 postgresql ruby-on-rails jsonb ruby-on-rails-5
在我阅读的关于在迁移中添加Postgres数据类型的稀缺指令jsonb中,它看起来像这样:
create_table :ref_check_ins do |t|
t.jsonb :document, null: false, default: '{}'
t.index :document, using: :gin
end
Run Code Online (Sandbox Code Playgroud)
但有没有理由反对默认为字符串的Hash intead,即{}而不是'{}'?
将其定义为String类型时,该列的类:
String < Object
Run Code Online (Sandbox Code Playgroud)
将其定义为Hash类型时,该列的类:
Hash
Run Code Online (Sandbox Code Playgroud)
在迁移文件,你将要使用的{}VS '{}'.
我真的只是苦苦挣扎了一段时间,事情就是我认为PG适配器隐含地知道如何将哈希转换为jsonb对象.它不像postgres DB中的json类型,你在那里存储一个json对象的字符串值,而是一个实际的二进制对象(在jsonb中).我可以在某个地方的Rails 4.2发布代码中挖掘它,但是,如果你正在查看它上面的精简文档(我将在不久的将来添加它),那么关键在于你'当你这样做时'{}',实际上从Postgres获得一个字符串,因此当你尝试indifferent_access它时,它会失败,因为一个字符串不能有无关紧要的访问权限.这可能是我第一次抬头,他们提供的信息存在一些问题.
老实说,我不使用直线上升{},无论如何,有利于[]过{},因为平时我处理非常具体的日志记录功能我想明确的记录,而不必连接两个大表连接在一起.这是我在5.0上的特殊用例,如果你<5,可能会有点不同,但可能不是很多.
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |