CRITICAL *WEIRD* ERROR! :(

user model
  has_one :paying_user, :dependent => :destroy

paying_user model
  set_primary_key :user_id
  belongs_to :user
  has_one :credit_card, :foreign_key => 'user_id', :dependent
=> :destroy

I can load and print <%= user.paying_user.credit_card %> ONCE and it works, if I reload the page I got:

undefined method `credit_card' for #<PayingUser:0xb7153378>

log tail:

Processing MerchantController#rebill (for 127.0.0.1 at 2007-06-18
18:05:56) [GET]
Mon Jun 18 18:05:56 +0000 2007 (6124) Session ID:
f752e7e5c586cefc81b62a352d0cf6a9
Mon Jun 18 18:05:56 +0000 2007 (6124) Parameters:
{"action"=>"rebill", "controller"=>"merchant"}
Mon Jun 18 18:05:56 +0000 2007 (6124) e[4;35;1mUser Load Including
Associations (0.016470)e[0m e[0mSELECT users.`id` AS t0_r0,
users.`username` AS t0_r1, users.`email` AS t0_r2, users.`firstname`
AS t0_r3, users.`lastname` AS t0_r4, users.`gender_id` AS t0_r5,
users.`born_on` AS t0_r6, users.`created_at` AS t0_r7,
users.`expires_on` AS t0_r8, users.`roles` AS t0_r9, users.`hobbies`
AS t0_r10, paying_users.`user_id` AS t1_r0, paying_users.`firstname`
AS t1_r1, paying_users.`lastname` AS t1_r2, paying_users.`email` AS
t1_r3, paying_users.`address1` AS t1_r4, paying_users.`address2` AS
t1_r5, paying_users.`city` AS t1_r6, paying_users.`state_province` AS
t1_r7, paying_users.`postal_code` AS t1_r8, paying_users.`country` AS
t1_r9, paying_users.`payment_type` AS t1_r10,
paying_users.`phone_number` AS t1_r11, paying_users.`auto_renew` AS
t1_r12 FROM users LEFT OUTER JOIN paying_users ON paying_users.user_id
= users.id WHERE (expires_on < '2007-06-18' AND expires_on <>
'2007-06-23' AND auto_renew = 1) ORDER BY expires_on DESCe[0m

Mon Jun 18 18:05:56 +0000 2007 (6124) e[4;36;1mUser Load Including
Associations (0.000212)e[0m e[0;1mSELECT users.`id` AS t0_r0,
users.`username` AS t0_r1, users.`email` AS t0_r2, users.`firstname`
AS t0_r3, users.`lastname` AS t0_r4, users.`gender_id` AS t0_r5,
users.`born_on` AS t0_r6, users.`created_at` AS t0_r7,
users.`expires_on` AS t0_r8, users.`roles` AS t0_r9, users.`hobbies`
AS t0_r10, paying_users.`user_id` AS t1_r0, paying_users.`firstname`
AS t1_r1, paying_users.`lastname` AS t1_r2, paying_users.`email` AS
t1_r3, paying_users.`address1` AS t1_r4, paying_users.`address2` AS
t1_r5, paying_users.`city` AS t1_r6, paying_users.`state_province` AS
t1_r7, paying_users.`postal_code` AS t1_r8, paying_users.`country` AS
t1_r9, paying_users.`payment_type` AS t1_r10,
paying_users.`phone_number` AS t1_r11, paying_users.`auto_renew` AS
t1_r12 FROM users LEFT OUTER JOIN paying_users ON paying_users.user_id
= users.id WHERE (expires_on = '2007-06-18' AND auto_renew = 1) ORDER
BY expires_on DESCe[0m
Mon Jun 18 18:05:56 +0000 2007 (6124) Rendering within layouts/
application
Mon Jun 18 18:05:56 +0000 2007 (6124) Rendering merchant/rebill
Mon Jun 18 18:05:56 +0000 2007 (6124)

ActionView::TemplateError (undefined method `credit_card' for
#<PayingUser:0xb7153378>) on line #15 of app/views/merchant/
rebill.rhtml:
12:
13: <li> user: <%= user.username %> on <%= user.expires_on %>
14:
15: <% user.auth().message %>
16:
17: <%= user.paying_user.credit_card %>
18:

    /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/
base.rb:1860:in `method_missing'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/
associations/association_proxy.rb:123:in `send'
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/
associations/association_proxy.rb:123:in `method_missing'
    #{RAILS_ROOT}/app/models/user.rb:161:in `format_credit_card'
    #{RAILS_ROOT}/app/models/user.rb:234:in `auth'
    #{RAILS_ROOT}/app/views/merchant/rebill.rhtml:15:in
`_run_rhtml_47app47views47merchant47rebill46rhtml'
    #{RAILS_ROOT}/app/views/merchant/rebill.rhtml:11:in `each'
    #{RAILS_ROOT}/app/views/merchant/rebill.rhtml:11:in
`_run_rhtml_47app47views47merchant47rebill46rhtml'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_view/
base.rb:326:in `send'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_view/
base.rb:326:in `compile_and_render_template'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_view/
base.rb:301:in `render_template'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_view/
base.rb:260:in `render_file'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:806:in `render_file'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:711:in `render_with_no_layout'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/layout.rb:247:in `render_without_benchmark'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/benchmarking.rb:50:in `render'
    /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/benchmarking.rb:50:in `render'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:1096:in `perform_action_without_filters'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:632:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:449:in `call'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_filter'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:619:in `perform_action_without_benchmark'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
    /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/rescue.rb:83:in `perform_action'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:430:in `send'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:430:in `process_without_filters'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:624:in
`process_without_session_management_support'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/session_management.rb:114:in `process'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:330:in `process'
    /usr/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:41:in
`dispatch'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:
78:in `process'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:
76:in `synchronize'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:
76:in `process'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:618:in
`process_client'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in
`each'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in
`process_client'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in
`run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in
`initialize'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in
`new'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in
`run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in
`initialize'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in
`new'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in
`run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/
configurator.rb:271:in `run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/
configurator.rb:270:in `each'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/
configurator.rb:270:in `run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:127:in
`run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/command.rb:
211:in `run'
    /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:243
    /usr/bin/mongrel_rails:16:in `load'
    /usr/bin/mongrel_rails:16

Emanuele Mek Tozzato wrote:

user model
  has_one :paying_user, :dependent => :destroy

paying_user model
  set_primary_key :user_id
  belongs_to :user
  has_one :credit_card, :foreign_key => 'user_id', :dependent
=> :destroy

I can load and print <%= user.paying_user.credit_card %> ONCE and it works, if I reload the page I got:

undefined method `credit_card' for #<PayingUser:0xb7153378>

Which OS, database, and database adapter are you using?

thanks for asking!

I'm sandboxing on ubuntu feisty, nginx and mongrel.. so the issue is
only on personal localhost, productions servers work ok.. application
uses libevent, sesstrack and memcached and problems started when using
xml for page caching.. db is mysql.

  # Allow xml_request to work with page caching
  map.connect 'xml/
query/:controller/:action/:cat/:sub/:page', :xml_request => '1'
  map.connect 'xml/:controller/:action/:id', :xml_request => '1'

this error is driving me crazy..

Emanuele Mek Tozzato wrote:

I'm sandboxing on ubuntu feisty, nginx and mongrel.. so the issue is
only on personal localhost, productions servers work ok.. application
uses libevent, sesstrack and memcached and problems started when using
xml for page caching.. db is mysql.

  # Allow xml_request to work with page caching
  map.connect 'xml/
query/:controller/:action/:cat/:sub/:page', :xml_request => '1'
  map.connect 'xml/:controller/:action/:id', :xml_request => '1'

this error is driving me crazy..

I had a similar error that turned out to be a problem with the
pure Ruby DB bindings, fixed by moving to the C bindings.

But in your case it may be a memcached issue.