Rails + Postgres JSON字段和update_column

hob*_*key 3 postgresql json ruby-on-rails

我现在一直在玩Rails(4)+ Postgres JSON字段,我注意到如果我做这样的事情

model.json_data = {
   field1: "hello",
   field2: "world"
}
model.save
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,如果我这样做

model.update_column(:json_data, {
   field1: "hello",
   field2: "world"
} )
Run Code Online (Sandbox Code Playgroud)

它不起作用.似乎update_column不会将数据存储为JSON,而只是包含换行符和制表符的字符串.问题是,我希望在after_save回调中生成json_data,因此在更新JSON字段时我不需要重新触发after_save回调.

关于这里可能会发生什么或者如何绕过它的想法?

hob*_*key 9

没关系,我找到了解决方案.

model.update_column(:json_data, {
   field1: "hello",
   field2: "world"
}.to_json )
Run Code Online (Sandbox Code Playgroud)

事后看来显而易见.