Rails + Postgres JSON fields and update_column



我现在已经玩了一些Rails(4)+Postgres JSON字段,我注意到如果我做这样的

model.json_data = {
   field1: "hello",
   field2: "world"
}
model.save

它运行良好。但是,如果我做

model.update_column(:json_data, {
   field1: "hello",
   field2: "world"
} )

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

你有没有想过这里可能会发生什么,或者如何避开它?

无论如何,我找到了一个解决方案。

model.update_column(:json_data, {
   field1: "hello",
   field2: "world"
}.to_json )

事后看来似乎很明显。

最新更新