I have this code in a stand alone script that uses nokogiri with
activerecord to parse an xml file and initialise a database.
begin
this_client = correspondent_f.build_client
rescue => e
puts("Rescued error in build.")
puts(e.backtrace)
puts(" ")
puts(correspondent_f.inspect.to_yaml)
raise e
end
Which, for a certain input record generates this error:
Rescued error in build.
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract_adapter.rb:219:in `log''
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/postgresql_adapter.rb:550:in `execute''
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract/database_statements.rb:265:in
`update_sql''
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/postgresql_adapter.rb:561:in `update_sql''
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract/database_statements.rb:49:in
`update_without_query_dirty''
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/
connection_adapters/abstract/query_cache.rb:18:in `update''
. . .
--- "#<Correspondent id: 1, correspondent_common_name: \"tnt skypak
international exp.\", correspondent_legal_name: \"TNT SKYPAK
INTERNATIONAL EXP.\", correspondent_legal_form: \"UNKN\",
correspondent_legal_name_key: \"tntskypakinternationalexp\",
correspondent_status: \"HOLD\", changed_at: \"2010-03-18
19:49:49\",
changed_by: \"hp3000_client_import\", created_at: \"2010-03-18
19:49:49\", created_by: \"hp3000_client_import\", lock_version:
0>"
/usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record
/connection_adapters/abstract_adapter.rb:219:in `log'': PGError:
ERROR: null value in column "correspondent_id" violates not-null
constraint (ActiveRecord::StatementInvalid)
: UPDATE "clients"
SET "changed_at" = ''2010-03-18
20:07:44'',
"correspondent_id" = NULL, "lock_version" = 1
WHERE id = 1
AND "lock_version" = 0
from /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/
active_record/connection_adapters/postgresql_adapter.rb:550:in
`execute''
from /usr/lib64/ruby/gems/1.8/gems/activerecord-2.3.5/lib/
active_record/connection_adapters/abstract/database_statements.rb:
265:in `update_sql''
. . .
Now, I know that the record triggering the exception is a duplicate of
one already previously loaded into the clients table. This in fact
should trigger a validation error in the Correspondent class. But I do
not see that validation error anywhere and I cannot understand why the
correspondent_id value is null in the second case.
The Client class has this:
belongs_to :correspondent
validates_associated
validates_presence_of :effective_from
validate :date_range
The Correspondent class has this:
has_one :client
I am sure that this situation has a simple explanation and I hope that
someone can provide it to me.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.