首页 文章

Rails Postgre问题:格式错误的数组文字,数组值必须以“{”或维度信息开头

提问于
浏览
0

我在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 回答

  • 0

    你为什么不这样做:

    t.text :your_table, :timezone, default: []
    t.text :your_table, :locale, default: []
    

    不确定为什么要调用 to_yaml 作为默认值 . 此外,您应该使用 text 的列类型,因为字符串默认情况下可能会限制为255个字符 .

  • 0

    最后,我做了以下事情,它解决了我的问题:

    t.string :timezone, :string
    t.string :locale, :string
    

    并使用序列化保留我的模型 .

相关问题