【问题标题】:Add an array column to a resource将数组列添加到资源
【发布时间】:2014-05-28 13:33:47
【问题描述】:

我需要帮助来完成使用rails g migration 命令将数组列添加到资源的步骤。我有一个 postgresql 数据库。我需要创建一个字符串数组和另一个整数数组。我希望它在我的schema.rb 文件中...

create_table "streams", force: true do |t|
t.array   "ids"     #strings
t.array   "lengths" #integers

【问题讨论】:

    标签: ruby-on-rails arrays postgresql migration


    【解决方案1】:

    您必须创建新的迁移,所以 rails g migration change_column_type_of_ids_and_length 。然后编辑生成的迁移文件。

    1. 首先尝试使用change_column 方法。如果这有效,您的数据将被保留。否则,请尝试第 2 步

      change_column :streams , :ids , :string , array: true , default: []
      change_column :streams , :lengths, :integer ,array: true , default: []
      
    2. 这里我们要删除数据列,然后创建一个新列。

      remove_column :streams, :ids
      remove_column :streams, :lengths
      add_column :streams , :ids , :string ,array: true , default: []
      add_column :streams , :lengths , :integer ,array:  true , default: []
      

    【讨论】:

    • 如何使用 rails g 迁移命令或使用迁移文件创建它?您不能直接更改架构
    • @Paritosh Piplewar 我尝试了 :string, array: true 但在迁移 can't quote Array 时出现以下错误。我不能为该字段使用 :JSON 数据类型,因为我使用的是 mysql 5.5
    • @FabrizioBertoglio 以上答案对 postgresql 有效。
    • @Paritosh 谢谢,它适用于mysql 5.5,语法如下change_table :locations do |t| t.string :houseimages, array: true end
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2014-05-27
    • 1970-01-01
    • 2012-11-23
    相关资源
    最近更新 更多