在这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'表就不会再... –