簡體   English   中英

在具有Foreigner Gem / Plugin的Ruby on Rails中,外鍵設置是否應該在Schema.rb中可見?

[英]In Ruby on Rails with the Foreigner Gem/Plugin, should the foreign key setup be visible in Schema.rb?

我正在開發Ruby on Rails應用程序,並使用foreigner插件在例如此類的遷移中設置外鍵約束。

add_foreign_key(:notifications, :invitations, :dependent => :delete)

但是,當我使用

rake db:migrate

它運行,但是我的schema.rb文件保持不變。 更改不應該在那里反映出來以便在另一個數據庫上安裝嗎?

如果您使用的是mysql,可以測試一下它是否真正創建了外鍵? 我同意根據schema.rb文檔,如果打算將應用程序移動到另一個系統,則應運行rake db:schema:load。 因此,如果信息不存在,則顯然將無法使用。 您將不得不進行所有遷移。 我一直在閱讀外國人的gem源代碼,看來gem應該將語句注入到您的模式中。 我認為這樣做的代碼鏈接是:

https://github.com/matthuhiggins/foreigner/blob/master/lib/foreigner/schema_dumper.rb

我唯一可以告訴您嘗試的是從頭開始生成schema.rb,並查看該模式是否完全填充。 如果不是這樣,當您遷移到另一個系統時,似乎將被迫運行遷移。 您還可以在github項目頁面上發布您的問題。 開發人員通常會很快回答。

因此,感謝ctilly79,我找到了答案。 由於某種原因,我認為自從我使用SQLite以來,它仍然會在Schema.rb中制作外鍵以用於生產。 不是這種情況。 您必須使用支持MySQL等外鍵的東西才能使其正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM