我在Heroku上为我的Rails应用程序创建了一个新的迁移 . 它添加了一些像这样的数组列:
t.string :timezone, array: true, default: [].to_yaml
t.string :locale, array: true, default: [].to_yaml
我尝试迁移时收到以下错误:
ActiveRecord :: StatementInvalid:PG :: InvalidTextRepresentation:ERROR:格式错误的数组文字:“--- []”DETAIL:数组值必须以“{”或维度信息开头 . :CREATE TABLE“过滤器”(“id”序列主键,“letter_id”整数,“性别”字符变化,“时区”字符变化[] DEFAULT'--- []',“locale”字符变化[] DEFAULT' --- []
这是我的模型:
class Filter < ApplicationRecord
belongs_to :letter
serialize :timezone
serialize :locale
serialize :segment
validates_uniqueness_of :letter_id
end
Stackoverflow上的一些人说删除serialize会有所作为,但我需要存储一个数组,而不是字符串 .
知道如何解决这个问题吗?
2 回答
你为什么不这样做:
不确定为什么要调用
to_yaml
作为默认值 . 此外,您应该使用text
的列类型,因为字符串默认情况下可能会限制为255个字符 .最后,我做了以下事情,它解决了我的问题:
并使用序列化保留我的模型 .