Schema.rb显示由于以下NoMethodError#undefined方法`’为nil:NilClass,因此无法转储表“progress”


我正在尝试使用Carrierwave添加一个多图像上传器, 然后 将文档添加到我的应用程序中。

通常我的schema.rb看起来像这样

ActiveRecord::Schema.define(version: 20160814232416) do create_table "progresses", force: :cascade do |t| t.string "title" t.string "date" t.text "content" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end 

当我跑:

rails g migration add_images_to_progresses images:jsonrake db:migrate

我的架构改变并显示出奇怪的东西……是Sqlite3还是Pg的问题? 我该怎么办 ?

 ActiveRecord::Schema.define(version: 20160815005123) do # Could not dump table "progresses" because of following NoMethodError #undefined method `[]' for nil:NilClass end 

我尝试对SQLite和PostgreSql使用相同的代码。 在SQLite中没有可用的数据类型“JSON”,因此它会引发错误。 当我在PostgreSQL中尝试相同时,它起作用了。

 ActiveRecord::Schema.define(version: 20160815070637) do enable_extension "plpgsql" create_table "progresses", force: :cascade do |t| t.string "title" t.string "date" t.text "content" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.json "images" end end 

如果要使用SQLite,则必须从JSON生成字符串,然后将该字符串作为常规字符串保存在数据库中。

我更喜欢使用支持JSON数据类型的PostgreSQL。