Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails: Adding migration to add an array (default empty)

I'm trying to add a column called share to one of my resources. The idea is that users can upload documents and share them with other (specific) users, and the array contains the emails of those that the user wants to share with.

I tried adding a migration with the code

class AddShareToDocuments < ActiveRecord::Migration   def change     add_column :documents, :share, :array, :default => []   end end 

But when I open up rails console in the command prompt, it says that share:nil and user.document.share.class is NilClass.

Creating a new array in the rails console sandbox by typing

newarray = [] 

says that newarray.class is Array.

Can anyone spot what I'm doing wrong?

like image 416
user2669464 Avatar asked Jan 05 '14 19:01

user2669464


2 Answers

if you want support all databases you must serialize the array in a String

class Documents < ActiveRecord::Base  serialize :share end  class AddShareToDocuments < ActiveRecord::Migration  def change    add_column :documents, :share, :string, :default => []  end  end 

In case of Postgresql and array datatype I found https://coderwall.com/p/sud9ja

like image 34
michelemina Avatar answered Oct 04 '22 09:10

michelemina


Rails 4 the PostgreSQL Array data type

In terminal

$ rails generate migration AddTagsToProduct tags:string 

Migration file:

class AddTagsToProduct < ActiveRecord::Migration   def change     add_column :products, :tags, :string, array: true, default: []   end end 

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

like image 183
gilcierweb Avatar answered Oct 04 '22 09:10

gilcierweb