2009-12-30 30 views
2

我一直在我的程序中隨處獲取ActiveRecord :: MissingAttributeError錯誤。我有乘客(30個實例)使用nginx運行。我在開發中沒有這個問題。當我刪除緩存資金時,它在生產中可以正常工作。緩存資金ActiveRecord :: MissingAttributeError

這是錯誤消息:

ActiveRecord::MissingAttributeError (missing attribute: deposit_amount): 
    lib/econveyance_pro/accounting/bsoa.rb:96:in `collect_deposit' 
    lib/econveyance_pro/accounting/bsoa.rb:24:in `calculate' 
    app/controllers/accounting_controller.rb:213:in `calculate_buyer_file_accounting' 
    app/controllers/accounting_controller.rb:175:in `generate_accounting' 
    app/controllers/accounting_controller.rb:153:in `generate_accounting_and_save' 
    lib/econveyance_pro/document_manager.rb:18:in `temporary_tables_xml' 
    lib/econveyance_pro/document_manager.rb:17:in `each' 
    lib/econveyance_pro/document_manager.rb:17:in `temporary_tables_xml' 
    app/controllers/document_manager_controller.rb:40:in `xml' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/rack/request_handler.rb:92:in `process_request' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/railz/application_spawner.rb:385:in `start_request_handler' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/railz/application_spawner.rb:343:in `handle_spawn_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/utils.rb:184:in `safe_fork' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/railz/application_spawner.rb:341:in `handle_spawn_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:352:in `__send__' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:352:in `main_loop' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:163:in `start' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/railz/application_spawner.rb:209:in `start' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/spawn_manager.rb:154:in `spawn_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:352:in `__send__' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:352:in `main_loop' 
    /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously' 

DEPOSIT_AMOUNT不會在我的數據庫存在。

回答

0

缺失屬性可能存在於您的數據庫中,但在您的模式和遷移中是否存在?

嘗試通過SQL查詢,訪問它自己,那麼在控制檯中,如果你能在兩,檢查拼寫錯誤控制在SQL

0

的事情是,當我停止使用緩存錢的這部分代碼工作正常,沒有出問題。不久,當我啓用緩存資金時,我得到這個錯誤,我已經通過查詢幾次。

當緩存資金被打開時,我也在程序的隨機區域得到了這個錯誤的不同屬性。

1

您是否更改了數據庫表架構? memcached對象可能使用舊的模式,需要清除。

使用$ cache.flush_all刷新memcached,通過「telnet localhost 11211」向memcached發送「flush_all」,或者重新啓動memcached。

0

我認爲這可能是一個生產問題。當你在生產env中啓動一個應用程序時,它會在所有文件的應用程序內部使緩存生效。 U沒有完全解釋它,但我認爲這個問題是因爲你做了一次遷移,也許沒有重新啓動服務器。

如果是這種情況,可能是因爲您正在使用的緩存可能仍然具有已經存在的已經存在的該屬性的圓頂引用。 =)