1
我有一個適用於多種語言的字典數據庫。該結構是這樣的:定期從列表中檢索列:通過導軌中的表
表:English_words
- ID
- 字
- wordtype
- 語法
表:Spanish_words (同爲英語)
表:French_words (相同英語)
表:English_Spanish
- english_id
- spanish_id
- weight_english
- weight_spanish
- use_english_if
- use_spanish_if
最後四列用於幫助我的程序確定在特定情況下,哪些翻譯可能最適合。我的英文模式包含
has_many :es_words, :through => :english_spanish, :order => 'weight_english ASC'
爲了獲得可能的西班牙語翻譯的優先順序。另外,我以後需要根據使用_.._ if列中的規則做一些更復雜的過濾。所以,無論何時我寫「this_word.es_words」來檢索英文單詞的西班牙語翻譯,我都希望我的結果對象還包含來自連接表的使用_.._ if列。我無法想象在沒有這些列的情況下只需要翻譯,所以我想在模型層面而不是控制器中解決這個問題。什麼是最好的方式來做到這一點?
(我沒有在Spanish_words表use_if的原因是我翻譯多國語言,以及條件將取決於什麼語言,我從翻譯/改變)
能否詳細說明一下?我嘗試過「EnglishWord.includes(:use_english_if).first」,它給出了一個錯誤。 「thisword.es_words.includes(:use_english_if).first」及其變體也一樣。唯一可以訪問use_english_if列的方法是忽略我的has_many:es_words連接並直接與直通表交談:thisword.english_spanish.first.use_english_if。經常使用太麻煩,所以我想擴展has_many或者創建自己的函數,這樣就無需與english_spanish表交談。 – Sprachprofi 2012-03-08 14:48:02