2010-05-28 3 views
0

J'ai une application de gestion des tests logiciels et une classe appelée TestResult:Rails utilise mauvaise classe dans belongs_to

class TestResult < ActiveRecord::Base 
    belongs_to :test_case, :class_name => "TestCase" 
end 

Je migration en ce moment de 1.x Rails 2.3.5.

Dans Rails 1.x, tout fonctionne correctement.

Lorsque vous essayez d'accéder à l'association dans Rails 2.3.5, je reçois l'erreur suivante:

NoMethodError: méthode non définie 'find' pour ActiveRecord :: TestCase: Classe de/usr/lib/ruby ​​/ pierres précieuses /1.8/gems/activerecord-2.3.5/lib/active_record/associations/belongs_to_association.rb:49:in 'send'

de /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5 /lib/active_record/associations/belongs_to_association.rb:49:in 'find_target'

de /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associ ations/association_proxy.rb: 239: dans 'load_target'

de /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:112:in ' recharger »

de /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations.rb:1250:in 'test_case'

Ma question est: comment Je dis à Rails d'utiliser ma classe TestCase au lieu de ActiveRecord :: TestCase.

classe TestCase:

class TestCase < ActiveRecord::Base 

    set_table_name "test_case" 

    has_many :test_results 
    belongs_to :component,   :foreign_key => "subsystem_id" 
    belongs_to :domain,   :foreign_key => "area_id" 
    belongs_to :use_case,   :foreign_key => "use_case_id" 
end 
+0

pourquoi vous migrez vers le rail 2.3.5? la version actuelle est 2.3.8? Et si vous faites déjà le travail, j'essaierais de migrer vers les rails 3.0, parce que cela devrait bientôt arriver – jigfox

+0

Je crois que si ruby ​​recherche 'ActiveRecord :: TestCase', il n'a pas trouvé 'TestCase'. Pouvez-vous poster un peu plus de code? la classe TestCase? – jigfox

+0

pourquoi 2.3.5? Eh bien, juste commencé à migrer comme il ya deux mois et j'ai oublié de mettre à jour les rails en attendant. a fait la mise à niveau en ce moment, mais ne résout pas ce problème. Comme il ne semble pas y avoir de date de sortie des rails 3 et que nous devons terminer la migration en raison de la fin de juin, le temps est tout simplement trop court ... – macsniper

Répondre

1

Qu'en est-

class TestResult < ActiveRecord::Base 
    belongs_to :test_case, :class_name => "::TestCase" 
end 
+0

Merci beaucoup, cela a résolu mon problème! – macsniper

0

Qu'en est-

class TestResult < ActiveRecord::Base 
    belongs_to :test_case 
end 
+0

Je l'ai déjà utilisé, ça ne marche pas non plus. – macsniper

Questions connexes