【问题标题】:Rails5 migration: can't quote ArrayRails5 迁移:不能引用数组
【发布时间】:2016-08-15 11:04:47
【问题描述】:

我尝试将我的应用从 Rails 4 迁移到 Rails 5 这是我的迁移:

class AddRevealedIdsToUser < ActiveRecord::Migration[5.0]
  def change
    add_column :users, :revealed_ids, :text, default: []
  end
end

和型号:

serialize :revealed_ids

它在 Rails 4 中完美运行,现在出现错误:

== 20160416214334 AddRevealedIdsToUser: migrating =============================
-- add_column(:users, :revealed_ids, :text, {:default=>[]})
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

can't quote Array
/usr/local/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/quoting.rb:177:in `_quote'
/usr/local/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql/quoting.rb:96:in `_quote'

如何解决?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5


    【解决方案1】:

    作为临时解决方案,我手动对其进行序列化。

    add_column :users, :revealed_ids, :text, default: [].to_yaml
    

    在 Rails 存储库中打开了一个问题。

    【讨论】:

      【解决方案2】:

      您可以尝试将array:true 添加到您的迁移中。

      add_column :users, :revealed_ids, :text, default: [], array:true
      

      这为我解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 2020-06-16
        • 2011-12-10
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        相关资源
        最近更新 更多