0

I am pretty new to rails so this may be a dumb question, but I have spent hours debugging this seemingly simple error and gotten nowhere. In my database, I want each row to to store an array of numbers (in a variable called contributions). I read that the best way to do that was by adding the following code:

class Goal < ActiveRecord::Base

  #...

  serialize :contributions, Array

  #...

end

The attribute is also in goal.rb

ActiveRecord::Schema.define(version: 20150711171452) do

  create_table "goals", force: :cascade do |t|
    #...
    t.decimal  "contributions"
    #...
  end

end

I added it via this migration:

class AddContributorsToGoals < ActiveRecord::Migration
  def change
    add_column :goals, :contributors, :string
    add_column :goals, :contributions, :decimal
  end
end

The only problem is that whenever I try to access this attribute, I always get errors stating that it is of type BigDecimal. Rails thinks that this is a single number, but I want it to be a list of numbers. Any ideas as to what I could be doing wrong?

One example of a problem I get is that when this executes:

@goal.contributions << @goal.lastUpdateAmount

but I get this error

undefined method `<<' for #<BigDecimal:7f95e082ab18,'-0.0',9(9)>

I followed identical steps with an array of strings and that was serialized properly. I just don't know what's going on with this one.

Nick
  • 3
  • 2

1 Answers1

1

Please change data type decimal to text

class AddContributorsToGoals < ActiveRecord::Migration
  def change
    add_column :goals, :contributions, :text
  end
end
Ravindra
  • 130
  • 11