Question: I have a simple case, involving two model classes:

```
class Game < ActiveRecord::Base
  has_many :snapshots

  def initialize(params={})
   # ...
  end
end

class Snapshot < ActiveRecord::Base
  belongs_to :game

  def initialize(params={})
  # ...
  end
end

```

with these migrations:

```
class CreateGames < ActiveRecord::Migration
  def change
    create_table :games do |t|
      t.string :name
      t.string :difficulty
      t.string :status

      t.timestamps
    end
  end
end

class CreateSnapshots < ActiveRecord::Migration
  def change
    create_table :snapshots do |t|
      t.integer :game_id
      t.integer :branch_mark
      t.string  :previous_state
      t.integer :new_row
      t.integer :new_column
      t.integer :new_value

      t.timestamps
    end
  end
end

```

If I attempt to create a Snapshot instance in rails console, using 

```
Snapshot.new

```

I get

```
(Object doesn't support #inspect)

```

Now for the good part. If I comment out the initialize method in snapshot.rb, then Snapshot.new works. Why is this happening?  

BTW I am using Rails 3.1, and Ruby 1.9.2

Answer: 
This is happening because you override the `initialize` method of your base class (ActiveRecord::Base). Instance variables defined in your base class will not get initialized and `#inspect` will fail.

To fix this problem you need to call `super` in your sub class:

```
class Game < ActiveRecord::Base
  has_many :snapshots

  def initialize(params={})
   super(params)
   # ...
  end
end

```
The same error if you put the attribute type wrong:

```
attribute :publicar, :integer, default: true

```

instead of

```
attribute :publicar, :boolean, default: true

```