我有一个在Heroku上运行PostgreSQL 9.6的Rails 5.0.2应用程序,使用以下模型:
create_table "stories", force: :cascade do |t|
t.string "title", default: "", null: false
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "image_processing"
t.jsonb "image_json"
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
end
在我的应用中,我认为image_json
是Hash
。因此,当我调用Story.last.image_json.class
时,我希望输出始终为Hash
,这在我的开发环境中是正确的。当我在生产(Heroku)上运行相同的命令时,输出不是Hash
,而是String
。这怎么可能?
在localhost上:
Story.last.image_json.class
=> Hash
关于制作:
Story.last.image_json.class
=> String
起初我想也许是因为我在开发(9.4)中运行的稍微旧版本的Postgres比在生产中运行,但是将Postgres安装升级到9.6都没有效果。
我在操作之前只需检查代码中image_json
的类,暂时解决了这个问题,但这并没有真正解决我的问题。