【发布时间】:2013-11-11 23:25:46
【问题描述】:
所以我开始使用 Postgres JSON 数据类型,现在是 there's a lot of fun stuff you can do with it。 在我的一个 Rails 应用程序中,它还不是 Rails 4(support for Postgres JSON has been added),我添加了一个 JSON 列,如下所示:
create_table :foo do |t|
t.column :bar, :json
end
但我不知道如何为该列设置默认值。
我尝试了所有变体,例如{}、'{}'、'{}'::json、'[]'::json 等,但是当迁移运行时我得到一个错误,或者它根本不起作用,这意味着迁移运行但是,当我创建一个新的Foo,bar 是nil。
【问题讨论】:
-
您是否尝试过在模型中手动设置默认值? AR 通常会破坏或忽略它不理解的默认值。
-
是的,现在我使用
after_initialize回调,但我通常不喜欢那些... -
试试
"",我相信这就是hstore用来表示空哈希的原因 -
-- add_column(:foo, :bar, :json, {:default=>""}) rake aborted! An error has occurred, this and all later migrations canceled: PG::InvalidTextRepresentation: ERROR: invalid input syntax for type json DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: : ALTER TABLE "foo" ADD COLUMN "bar" json DEFAULT '' -
您可以尝试将默认设置为“null”吗?
标签: ruby-on-rails json ruby-on-rails-3.2 rails-postgresql pg