Forum: Ruby on Rails Cant read an Array as an attribute of a record

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Robert S. (Guest)
on 2006-05-06 07:42
I am trying to check the size of an array in a newly created object, and
am getting an "undefined method" error. I have written a minimal test
case. Can someone spot the issue here? I'm sure I'm missing something
simple....

I realize that I'm not saving the object to the database, I've got a
requirement to create and manipulate it in memory before persisting it.

Thanks in advance to anyone who may help!

Test/app/db/migrate/001_create_test_objects.rb
------------------------------------------------------------------
class CreateTestObjects < ActiveRecord::Migration
  def self.up
    create_table :test_objects do |t|
      t.column :name, :string
      t.column :test_array, :string
    end
  end

  def self.down
    drop_table :test_objects
  end
end

Test/app/models/test_object.rb
------------------------------------------------------------------
class TestObject < ActiveRecord::Base
  serialize :test_array
  def initialize
    @test_array = []
    puts "Called constructor"
    puts @test_array.size
    # This Works!!!
  end
end

Test/app/controllers/test_object_controller.rb
------------------------------------------------------------------
class TestObjectController < ApplicationController
  def test_case
    @test_object = TestObject.new
    puts @test_object.test_array.size
    # This doesn't work!!!
  end
end

http://localhost:3000/test_object/test_case
------------------------------------------------------------------
undefined method `test_array' for #<TestObject:0x39e4030 @test_array=[]>

RAILS_ROOT: ./script/../config/..
Application Trace | Framework Trace | Full Trace

#{RAILS_ROOT}/app/controllers/test_object_controller.rb:4:in `test_case'
-e:3

<...snip...>

Console Log
------------------------------------------------------------------
127.0.0.1 - - [05/May/2006:23:38:33 Eastern Standard Time] "GET
/test_object/test_case HTTP/1.1" 500 7836
- -> /test_object/test_case
Called constructor
0
This topic is locked and can not be replied to.