我正在學習Ruby on Rails,並且與文件和代碼的結構相混淆。 爲什麼Rails中的表字段是在遷移中定義的,而不是在模型中定義的? 我知道,需要什麼模型。然而,像任何框架一樣的rails都是爲了讓開發者更容易工作,並將所有骯髒的工作置於隱蔽之中。 此外,我們在模型和遷移中定義數據庫的關係? 但我們可以只在一個地方定義它們,並自動轉移到另一個..爲什麼Rails表格字段是在遷移中定義的,而不是在模型中定義的?
0
A
回答
4
爲什麼在Rails的表中的字段在遷移定義,但不是在模型?
他們不是。它們在數據庫中定義。一旦你的遷移運行完畢,你可以刪除它們,模型仍然會完全意識到它們的表格定義。如果您選擇通過其他方式(如手動運行SQL語句或GUI工具)來構建數據庫,則也可以構建和運行Rails應用程序,而不定義單個遷移。
此外,我們定義模型和遷移中的數據庫關係?
不,只在型號中。遷移是用於引入數據庫更改,僅此而已。他們的目的是編寫數據庫更改,以便可以將這些更改與對應用程序代碼的相關更改一起部署。
但我們可以只在一個地方定義它們,並自動轉移到另一個..
你的關係被在一個地方定義:在你的模型的關聯。您的數據庫可以添加額外的約束,如外鍵,但就Rails而言,如果您沒有關聯兩個模型的關聯,則這些模型不會鏈接。
相關問題
- 1. 缺少Rails 4中的表格列表,定義在遷移中
- 2. 在rails遷移中定義字符
- 3. 什麼是使用t.integer和t.reference在Rails遷移定義外鍵
- 4. 爲什麼laravel在控制器中定義驗證而不是Eloquent模型?
- 5. Laravel遷移 - 不刪除未在遷移中定義的表?
- 6. 在django模型中排序自定義字段的有效方法是什麼?
- 7. 爲什麼CURLOPT_CAINFO在命令行中定義,但不是在web中定義的?
- 8. 爲什麼DBLookup不是自定義端點而不是中介
- 9. 什麼是在asp.net中定義模型類的正確方法?
- 10. jQuery是沒有定義,沒有定義$,Rails的不是在Windows中定義10
- 11. CouchRest模型使用自定義值而不是guid _id字段
- 12. Z3定點:模型中公式爲false的含義是什麼?
- 13. 爲什麼Ruby告訴我:class是在Class(Kernel)而不是Object中定義的?
- 14. 在Rails應用程序中定義模型的常用方法是什麼?
- 15. Rails:爲什麼顯示的模板中定義了空格?
- 16. 是否可以在Rails遷移中使用自定義列類型?
- 17. 在Rails遷移中使用模型字段作爲默認值
- 18. 爲什麼在DefinitelyTyped`http.IncomingMessage`定義爲接口,而不是類?
- 19. 自定義模型字段遷移問題
- 20. Django模型中的自定義字段
- 21. Kohana ORM,定義模型中的字段
- 22. 模型中未定義的字段
- 23. 什麼是定義骨幹模型類屬性/字段的約定
- 24. 如何在遷移中將自定義對象添加到Rails模型中?
- 25. 爲什麼在Elasticsearch中按字段而不是索引指定字段?
- 26. 什麼定義Django中forms.ChoiceField的模型?
- 27. Django自定義更新模型表單 - 顯示相關模型的選定字段而不是外鍵ID。
- 28. C++:爲什麼'operator + ='定義了字符串而不是'operator +'?
- 29. 在AppDelegate中自定義UISearchBar&UINavigationBar的外觀?爲什麼要在課堂而不是實例級別自定義?
- 30. Rails的遷移 - 未定義的方法`'
ActiveRecord使用Ruby的整體靈活性,因此您只需在數據庫中設置模型的列。恕我直言,這是一個巨大的優勢,而不必在你的模型,XML或一些不可思議的代碼註釋語言中編寫一堆屬性。 – max
謝謝。但是我們仍然可以在遷移文件中進行關聯? – Liker777
@ Liker777不可以。在遷移中不能建立關聯。在您的模型中僅存在關聯*。您的遷移可以將外鍵引入數據庫,但外鍵不是** ActiveRecord關聯。 – meagar