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.

2

1 Answer 1

1

Please change data type decimal to text

class AddContributorsToGoals < ActiveRecord::Migration
  def change
    add_column :goals, :contributions, :text
  end
end
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.