我正在尝试向我的应用添加带有 Carrierwave following the documentation的多图片上传器。
通常我的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:json
和
rake 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
答案 0 :(得分:0)
我尝试对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。