在這article,我不明白是什麼問題,如果您運行rake db:migrate
而不是rake db:schema:load
。作者說,這是Rails模型與遷移過程有什麼關係?
,因爲你的第一個移民「create_posts」這是必要的 您已經定義了翻譯的屬性:從Post模型的翻譯標題:標題和:後 示範文本,但你刪除。
但是爲什麼您需要「在Post模型中定義可翻譯的屬性:標題和:文本」?如果您只是在運行遷移,那麼這與您的模型文件有什麼關係?遷移和數據庫不檢查您的模型文件的任何事情嗎?運行rake db:migrate
只是簡單地通過只看您的遷移和翻譯內部的這些rails方法到SQL命令爲您建立一個新的數據庫,然後爲您生成一個新的schema.rb
文件對嗎?爲什麼它關係到你模型中的內容?
所以你說,在全球化的寶石很可能會參考模型文件,所以運行結構,它只是更安全:負荷? – stackjlei
最有可能的是。然而,爲了確保,我閱讀了全球化的gem自述文件,並且確切地發現'.create_translation_table!'方法取決於模型代碼(參見[here](https://github.com/globalize/globalize#creating-我引用:「另請注意,在創建翻譯表之前,必須通過模型中的翻譯來定義翻譯後的屬性,如上所示。」 –
只有當您還有另一個遷移文件時:「從posts_translations表中刪除:標題」,並且在從郵件中刪除':title'時立即運行此遷移文件,它將會更「安全」模型。請參閱[文檔中的dir.down](https://github.com/globalize/globalize#adding-additional-fields-to-the-translation-table),瞭解如何創建遷移文件,以便刪除可翻譯的屬性。這很重要,因爲在你運行這個遷移文件之後,它會更新你的'schema.rb',這樣'post_translations'表就不會再... –