Rails:添加迁移以添加数组(默认为空)

use*_*464 25 postgresql ruby-on-rails

我正在尝试将一个名为share的列添加到我的一个资源中.这个想法是用户可以上传文档并与其他(特定)用户共享,并且该数组包含用户想要与之共享的电子邮件.

我尝试使用代码添加迁移

class AddShareToDocuments < ActiveRecord::Migration
  def change
    add_column :documents, :share, :array, :default => []
  end
end
Run Code Online (Sandbox Code Playgroud)

但是当我在命令提示符下打开rails console时,它表示share:nil和user.document.share.class是NilClass.

通过键入在rails控制台沙箱中创建一个新数组

newarray = []
Run Code Online (Sandbox Code Playgroud)

说newarray.class是Array.

谁能发现我做错了什么?

gil*_*web 83

Rails 4 PostgreSQL Array数据类型

在终端

$ rails generate migration AddTagsToProduct tags:string
Run Code Online (Sandbox Code Playgroud)

https://coderwall.com/p/sud9ja/rails-4-the-postgresql-array-data-type


小智 6

如果要支持所有数据库,则必须在String中序列化数组

class Documents < ActiveRecord::Base
 serialize :share
end

class AddShareToDocuments < ActiveRecord::Migration
 def change
   add_column :documents, :share, :string, :default => []
 end 
end
Run Code Online (Sandbox Code Playgroud)

在Postgresql和数组数据类型的情况下,我找到了https://coderwall.com/p/sud9ja