2015-01-16 208 views
1

我正在創建一個翻譯測驗網站。我有這些類:
- 版本 - quizz的正版。一個版本有很多翻譯。它屬於老師。
- 測試 - 測驗本身。它屬於學生
- 翻譯 - 它包含一對詞,一個在languaje 1和其他在languaje 2間
和2的關係
- TranslationsVersion - 包含翻譯測驗
的一個版本的名單 - TranslationsVersionsTest - 包含一個測驗的學生答案(所以,一個TranslationsVersion的答案)。學生將被多次詢問在一個測驗每個翻譯,所以我需要它是一個NM關係如何在Ruby on Rails中創建關聯之間的關聯

class Version < ActiveRecord::Base 
    belongs_to :dictionary 
    has_and_belongs_to_many :translations 
end 

class Test < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :version 
    has_and_belongs_to_many :translations_versions 
end 

class Translation < ActiveRecord::Base 
    belongs_to :aception_own, :class_name => "Aception" 
    belongs_to :aception_for, :class_name => "Aception" 
    has_and_belongs_to_many :versions 
end 

class TranslationsVersion < ActiveRecord::Base 
    belongs_to :version 
    belongs_to :translation 
    has_and_belongs_to_many :test 
end 

class TranslationsVersionsTest < ActiveRecord::Base 
    belongs_to :translations_versions 
    belongs_to :test 
end 

我的問題是,當我創建一個TranslationsVersionsTest:

tvt = TranslationsVersionsTest.create(translations_versions: tv, test: @test, round: turn) 

我得到這個錯誤:

NameError in TranslationsVersionsTestsController#launch 
uninitialized constant TranslationsVersionsTest::TranslationsVersions 

我認爲有一個關係問題,因爲這個關聯模型之一是其他關聯本身。我的模型輸入得好嗎?

回答

1

belongs_to奇異預期的關係名稱:

belongs_to :translations_version 
+0

從來就改變了模型就像你說的,然後從來就得到這個其他錯誤:「不能寫未知屬性'translations_version_id'」。該表的名字是translations_versions,因爲它是一種關係,而不是複數。 – Julitillo

+0

@ user1999804確保你的'TranslationsVersionsTest'表包含一個名爲'translations_version_id'的列 – MrYoshiji

+0

不,它沒有,因爲我創建了這個表作爲Translation和Version之間的關係,所以它生成的名字以's'結尾。我這樣做了「rails g scaffold translations_versions version:references translation:references」and「rails g scaffold translations_versions_tests translations_versions:references test:references answer:string round:integer」 – Julitillo