2010-05-28 36 views
0

我有一個應用程序管理軟件的測試和一類名爲TestResult中:Rails使用錯誤的類在belongs_to的

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

我現在Rails中的1.x遷移到2.3.5。

在Rails 1.x中一切正常。

當試圖訪問的Rails 2.3.5關聯,我得到以下錯誤:

NoMethodError:未定義的方法 '發現' ActiveRecord的:: TestCase的: 類從/ usr/lib中/紅寶石/寶石/1.8/gems/activerecord-2.3.5/lib/active_record/associations/belongs_to_association.rb:49:in'send'

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

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

from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:112:in' 「從/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations.rb:1250:in

'test_case'

我的問題是重裝:如何我告訴Rails使用我的TestCase類而不是ActiveRecord :: TestCase。

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

爲什麼要遷移到軌2.3.5?目前的版本是2.3.8?如果你已經完成了這項工作,我會嘗試遷移到rails 3.0,因爲它很快就會到期 – jigfox 2010-05-28 10:51:59

+0

我相信如果ruby正在尋找'ActiveRecord :: TestCase',它沒有找到'TestCase'。你能發佈更多的代碼嗎? TestCase類? – jigfox 2010-05-28 10:53:23

+0

爲什麼是2.3.5?好吧,就像兩個月前剛開始遷移一樣,忘記更新軌道。現在進行了升級,但並未解決此問題。由於似乎沒有rails 3發佈日期,並且我們必須在6月底之前完成遷移,所以時間太短... – macsniper 2010-05-28 11:05:30

回答

1

怎麼樣

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

非常感謝,解決了我的問題! – macsniper 2010-05-28 11:41:04

0

怎麼樣

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

我之前使用過,也不管用。 – macsniper 2010-05-28 11:16:24