2017-01-08 46 views
0

我正在學習Ruby on Rails,並且與文件和代碼的結構相混淆。 爲什麼Rails中的表字段是在遷移中定義的,而不是在模型中定義的? 我知道,需要什麼模型。然而,像任何框架一樣的rails都是爲了讓開發者更容易工作,並將所有骯髒的工作置於隱蔽之中。 此外,我們在模型和遷移中定義數據庫的關係? 但我們可以只在一個地方定義它們,並自動轉移到另一個..爲什麼Rails表格字段是在遷移中定義的,而不是在模型中定義的?

回答

4

爲什麼在Rails的表中的字段在遷移定義,但不是在模型?

他們不是。它們在數據庫中定義。一旦你的遷移運行完畢,你可以刪除它們,模型仍然會完全意識到它們的表格定義。如果您選擇通過其他方式(如手動運行SQL語句或GUI工具)來構建數據庫,則也可以構建和運行Rails應用程序,而不定義單個遷移。

此外,我們定義模型和遷移中的數據庫關係?

不,只在型號中。遷移是用於引入數據庫更改,僅此而已。他們的目的是編寫數據庫更改,以便可以將這些更改與對應用程序代碼的相關更改一起部署。

但我們可以只在一個地方定義它們,並自動轉移到另一個..

你的關係在一個地方定義:在你的模型的關聯。您的數據庫可以添加額外的約束,如外鍵,但就Rails而言,如果您沒有關聯兩個模型的關聯,則這些模型不會鏈接。

+0

ActiveRecord使用Ruby的整體靈活性,因此您只需在數據庫中設置模型的列。恕我直言,這是一個巨大的優勢,而不必在你的模型,XML或一些不可思議的代碼註釋語言中編寫一堆屬性。 – max

+0

謝謝。但是我們仍然可以在遷移文件中進行關聯? – Liker777

+0

@ Liker777不可以。在遷移中不能建立關聯。在您的模型中僅存在關聯*。您的遷移可以將外鍵引入數據庫,但外鍵不是** ActiveRecord關聯。 – meagar

相關問題