我不明白當rails有足夠的智能來完成大部分的工作,而不是爲什麼我們需要在使用has_and_belongs_to_many
關聯時明確定義連接表?爲什麼我們需要在HABTM中顯式定義連接表?
0
A
回答
0
Rails在這裏也很聰明。您並不總是必須將連接表的名稱告訴Rails; Rails有足夠的智能來解決它。你只需要創建一個遷移來生成表,所有其他的任務將由Rails處理。
比方說,你有以下兩個表:
作者
書
的作者很多書,一本書是由許多作者撰寫。 Rails將自動地 preiect連接表名稱:authors_books
- 您只需編寫遷移來創建它。
然後,這個任務很簡單。
author = Author.first
author.books # all the books authored by the first author
book = Book.first
book.authors # all the authors of the first book
new_book = Book.new
author.books << new_book # add a new book to an author
author.save
new_author = Author.new
books.author << new_author # add a new author to a book
請記住,它不一定總是這樣。您也可以更改表名稱。
1
我想你只是考慮從數據庫主題閱讀正常形式。
如果Rails沒有has_and_belongs_to_many
的連接表,那麼對於相同的記錄將會有多個條目違背正常形式。這是一個guide只是爲了回想起事情。
相關問題
- 1. 我是否需要手動爲HABTM連接表創建遷移?
- 2. MySQL連接器網絡爲什麼我們需要它?
- 3. in solrImportScheduler爲什麼我們需要爲delta導入定義reBuildIndexBeginTime?
- 4. 爲什麼我們需要在JavaScript
- 5. 爲什麼顯示連接未定義?
- 6. 節點爲單線程時,爲什麼我們需要node.js中的連接池?
- 7. 爲什麼我們需要在Spring中指定HttpMessageConverter?
- 8. 爲什麼我們需要在Apache Kafka中指定Serializer?
- 9. 爲什麼我們需要在C#中鎖定和對象?
- 10. 爲什麼我們需要在MSIL中顯式調用父構造函數?
- 11. 爲什麼我們需要在程序集中定義.data和.text部分?
- 12. 爲什麼我們要在AppDelegate中自定義UINavigationBar的barTintColor?
- 13. 爲什麼我們需要fieldset標籤?
- 14. 爲什麼我們需要RIA?
- 15. 爲什麼我們需要.htaccess的worpdress?
- 16. 爲什麼我們需要9補丁?
- 17. 我們爲什麼需要纖維
- 18. 爲什麼我們需要BeginGetResponse和BeginRead?
- 19. 爲什麼我們需要TensorFlow tf.Graph?
- 20. 爲什麼我們需要Bower和Nuget?
- 21. 爲什麼我們需要ng-click?
- 22. 爲什麼我們需要`ngDoCheck`
- 23. 爲什麼我們需要設置SONAR_RUNNER_OPTS?
- 24. 爲什麼我們需要Anaconda 2.7?
- 25. 爲什麼我們需要mktemp?
- 26. 爲什麼我們需要ClassMethods和InstanceMethods?
- 27. 爲什麼我們需要ioc容器
- 28. 爲什麼我們需要RBAC許可?
- 29. 爲什麼我們需要scalaz.stream迭代?
- 30. 爲什麼我們需要Buffer.isBuffer方法?
你說的是遷移,對嗎?這是一個真正的問題還是更多的評論?你不必在ruby-code中指定它,但你必須首先在數據庫中構建它。 – nathanvda