2009-12-30 5 views
2

Je continue d'obtenir des erreurs ActiveRecord :: MissingAttributeError de manière aléatoire partout dans mon programme. J'ai passager (30 instances) fonctionnant avec nginx. Je n'ai pas ce problème en dev. Lorsque je retire l'argent du cache, cela fonctionne très bien dans la production.cache money ActiveRecord :: MissingAttributeError

c'est l'erreur msg:

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 existe dans ma db.

Répondre

0

Un attribut manquant peut exister dans votre base de données, mais existe-t-il dans votre schéma et vos migrations?

essayez d'accéder via une requête SQL vous, puis dans la console, si vous le pouvez à la fois, vérifiez votre contrôleur pour les fautes d'orthographe dans le sql

0

La chose est quand je cesse d'utiliser l'argent du cache cette partie du le code fonctionne bien sans problème. Dès que j'accepte l'argent de la mise en cache, j'obtiens cette erreur, j'ai été à travers la requête quelques fois.

Je reçois également cette erreur dans les zones aléatoires du programme pour différents attributs, lorsque l'argent du cache est activé.

1

Avez-vous modifié le schéma de votre table de base de données? Les objets memcached utilisent probablement l'ancien schéma et doivent être effacés.

Rincez memcached en utilisant $ cache.flush_all, en envoyant "flush_all" à memcached via "telnet localhost 11211", ou en redémarrant memcached.

0

Je pense que cela pourrait être un problème de production. Lorsque vous démarrez une application dans production env, elle crée un cache à l'intérieur de l'application de tous les fichiers. Je ne l'ai pas expliqué complètement, mais je pense que le problème vient du fait que vous avez effectué une migration et que vous n'avez peut-être pas redémarré le serveur.

Si c'est le cas, c'est peut-être parce que le cache que vous utilisez peut encore avoir des références de dôme à cet attribut qui n'existe plus. =)

Questions connexes