I am getting this error with a very simple model and schema. The
record saves even though an error has been generated. I have tried
this with both postgres and mysql.
Here is the model.
class Person < ActiveRecord::Base
end
Here is a transcript…
p = Person.new
=> #<Person id: nil, hash: nil, first_name: nil, last_name: nil,
middle_name: nil, date_of_birth: nil, date_of_death: nil, age: nil,
gender: nil, email: nil, state: 0, status: 0, created_at: nil,
updated_at: nil>
ree-1.8.7-2011.03 :002 > p.first_name = ‘tim’
=> “tim”
ree-1.8.7-2011.03 :003 > p.save
TypeError: can’t convert nil into Integer
from
/home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:322:in
uniq' from /home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:322:incommit_transaction_records’
from
/home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:165:in
transaction' from /home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/transactions.rb:207:intransaction’
from
/home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/transactions.rb:290:in
with_transaction_returning_status' from /home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/transactions.rb:240:insave’
from
/home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/transactions.rb:251:in
rollback_active_record_state!' from /home/tim/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.5/lib/active_record/transactions.rb:239:insave’
from (irb):3
ree-1.8.7-2011.03 :004 > Person.all
=> [#<Person id: 1, hash: nil, first_name: “tim”, last_name: nil,
middle_name: nil, date_of_birth: nil, date_of_death: nil, age: nil,
gender: nil, email: nil, state: 0, status: 0, created_at: “2011-05-12
03:39:33”, updated_at: “2011-05-12 03:39:33”>]
ree-1.8.7-2011.03 :005 >
Here is the SQL statement generated
INSERT INTO people (date_of_birth, updated_at, gender,
date_of_death, created_at, hash, first_name, middle_name,
age, status, last_name, email, state) VALUES (NULL,
‘2011-05-12 03:39:33’, NULL, NULL, ‘2011-05-12 03:39:33’, NULL, ‘tim’,
NULL, NULL, 0, NULL, NULL, 0)
Here is the migration
create_table :people do |t|
t.string :hash
t.string :first_name
t.string :last_name
t.string :middle_name
t.date :date_of_birth
t.date :date_of_death
t.integer :age
t.string :gender
t.string :email
t.integer :state , :default => 0
t.integer :status , :default => 0
t.timestamps
end
add_index :people, :email
add_index :people, :hash
add_index :people, :state
add_index :people, :status
So there is nothing weird at all.
Very strange