我正在尝试在heroku PG数据库中存储一个字符串数组。
我已经尝试过将marshal转储到一个在sqlite中工作的字符串。但是对于PG,如果数组太大,则不会保存整个转储字符串,并且在尝试访问时无法加载数组。当试图访问该数组时,我得到错误`marshal data too short'
迁移
add_column :orders, :photo_urls, :text, :limit => nil
或者,我尝试在模型中使用serialize :photo_urls
。同样,这适用于sqlite,但在生产PG中,我收到错误array value must start with "{" or dimension information
尝试使用不同的默认设置进行迁移:
add_column :orders, :photo_urls, :text, array: true, default: []
add_column :orders, :photo_urls, :text, array: true, default: '{}'
是否有不同的方法在sqlite和PG中存储数组?
答案 0 :(得分:0)
我必须在我的开发环境中为sqlite序列化数组。
serialize :photo_urls if Rails.env.development?
迁移
add_column :orders, :photo_urls, :text, array: true, default: []