Ruby on rails 设置json列的默认值

Ruby on rails 设置json列的默认值,ruby-on-rails,json,postgresql,activerecord,Ruby On Rails,Json,Postgresql,Activerecord,我正在考虑使用Postgres的功能,即通过activerecords将json设置到列中。我想知道,在创建类似于{name:'',other_name:''}之类的表时,如何给它一个默认值 我还想了解,如果我为一个列创建一个默认json值,比如上面的示例,然后稍后我填充这些值,但在其他某个时间将其重置为“默认值”,这将是什么样子。这就像任何其他默认值一样,一旦您修复了json语法: CREATE TABLE mytable ( someothercol integer, som

我正在考虑使用Postgres的功能,即通过activerecords将json设置到列中。我想知道,在创建类似于
{name:'',other_name:''}
之类的表时,如何给它一个默认值


我还想了解,如果我为一个列创建一个默认json值,比如上面的示例,然后稍后我填充这些值,但在其他某个时间将其重置为“默认值”,这将是什么样子。

这就像任何其他默认值一样,一旦您修复了json语法:

CREATE TABLE mytable (
    someothercol integer,
    somecol json DEFAULT '{"name": "", "other_name": ""}'
);
如果设置为
默认值
,则只会执行以下操作:

regress=> INSERT INTO mytable(someothercol, somecol) VALUES (42, '{"nondefault": 1}');
INSERT 0 1
regress=> SELECT * FROM mytable;
 someothercol |      somecol      
--------------+-------------------
           42 | {"nondefault": 1}
(1 row)

regress=> UPDATE mytable SET somecol = DEFAULT WHERE someothercol = 42;
UPDATE 1
regress=> SELECT * FROM mytable;
 someothercol |            somecol             
--------------+--------------------------------
           42 | {"name": "", "other_name": ""}
(1 row)