【发布时间】:2017-09-30 13:20:15
【问题描述】:
在我的 Rails 5.0.5 应用程序中,我需要将 json 列转换为 string, array: true。
我的json 列中的值如下:
[ "200px-RR5219-0015R.png", "2017_03_25_2235.doc", "137555.jpg" ]
我尝试了这种迁移:
class ChangeTaskAttachmentsTypeToString < ActiveRecord::Migration[5.0]
def change
change_column :tasks, :attachments, :string, array: true
end
end
得到了这个错误:
ActiveRecord::StatementInvalid: PG::DatatypeMismatch: ERROR: column "attachments" cannot be cast automatically to type character varying[]
HINT: You might need to specify "USING attachments::character varying[]".
: ALTER TABLE "tasks" ALTER COLUMN "attachments" TYPE character varying[]
然后我编辑了迁移:
class ChangeTaskAttachmentsTypeToString < ActiveRecord::Migration[5.0]
def change
change_column :tasks, :attachments, 'character varying[] USING attachments::character varying[]'
end
end
最后得到这个错误:
PG::CannotCoerce: ERROR: cannot cast type json to character varying[]
: ALTER TABLE "tasks" ALTER COLUMN "attachments" TYPE character varying[] USING attachments::character varying[]
如何进行此迁移?
【问题讨论】:
标签: ruby-on-rails postgresql ruby-on-rails-5 postgresql-9.3 rails-migrations