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