ruby-on-rails - 为 json 列设置默认值

标签 ruby-on-rails json postgresql activerecord

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

我也想了解如果我为列创建一个默认的 json 值,就像上面的例子,然后我填写这些值,然后在其他时间将它重置回“默认”如何看起来会这样。

最佳答案

它就像任何其他默认设置一样,一旦你修复了 json 语法:

CREATE TABLE mytable (
    someothercol integer,
    somecol json DEFAULT '{"name": "", "other_name": ""}'
);

如果您设置为 DEFAULT,它就是这样做的:

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)

关于ruby-on-rails - 为 json 列设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26518078/

相关文章:

ruby-on-rails - Ruby on Rails 中 <%= ... %> 和 <% ... %> 有什么区别

mysql - Ruby on Rails 是否适合我想要实现的目标?为现有的 MySQL 数据库创建 CRUD 脚手架

jquery - 如何用另一个元素覆盖粘性页脚?

javascript - AngularJS 在数组中搜索过滤器到对象中

json - 在 postgresql 中,如何在 jsonb 键上返回一个 bool 值而不是字符串?

ruby-on-rails - Gem::Ext::BuildError:错误:无法构建 gem native 扩展。 - 中央操作系统 6.5

ruby-on-rails - 如何在 Rails 应用程序中记录上次事件的时间?

ios - -[__NSCFArray objectForKey :]: unrecognized selector sent to instance 0x11c824e0

json - PostgreSQL 9.4 : Aggregate/Join table on JSON field id inside array

java - 方法名称execute 该语句不声明OUT 参数。使用 { ?= call ... } 声明一个