activerecord如何爲新創建的記錄分配一個ID? ID值似乎遍佈全球。有時他們是連續的,但有時他們似乎是某種散列。 有沒有辦法控制行爲?Rails如何提供新型號/記錄的ID?
1
A
回答
1
在關係數據庫中,您會看到ID通常是順序的。這恰好是一個自動遞增的字段,在默認情況下,這些數據庫使用Rails時稱爲id
。這是99%的情況,這意味着99%的時間您可以期望以這種方式完成。這是理智的方式。
但是,在某些情況下,數據庫中的「id」字段可能不會自動遞增,而可能是字符串。在我目前正在使用的數據庫中,id字段被稱爲client_id
,是一個6個字符的字符串,例如「RAB001」,需要由代碼本身手動分配。這是由於我們支持的遺留系統,我們沒有辦法解決這個問題。它就是這樣。
在其他數據庫如Mongoid中,id再次自動生成。雖然這裏有一個區別:而不是他們自動遞增數字他們是一個哈希。在Mongo數據庫中,我碰巧得到了方便,其中一個對象的_id
字段(注意下劃線)就是這個可愛,易於理解的哈希:4e22b5812f8b7d6f6d000001
。這是由Mongo自動生成的,除了當我需要找到一個對象並且沒有其他方式通過另一個唯一值來查找它時,我並不在乎它是什麼。
我建議堅持使用自動生成的ID系統,無論是傳統數據庫系統(如PostgreSQL或MySQL)還是Mongo提供的東西。
任何需要手動生成記錄主鍵的系統都需要有一個巨大的「HERE BE DRAGONS」標籤,並且應該像硝酸甘油或similarly to this apt analogy一樣處理。 如果您可以,請避免使用此係統。
我在這裏被諷刺。
相關問題
- 1. Android的SQLite的 - 如何更新記錄ID號刪除記錄
- 2. Ruby on Rails的HAS_ONE型號不提供ID列
- 3. 提取記錄中提供ID的順序和
- 4. 來自不同型號的Rails 4新記錄
- 5. Django的最新型號外鍵記錄
- 6. 如何提供on Rails的
- 7. 如何在rails中重新計算DB記錄ID?
- 8. 如何重新啓動記錄ID在1 Rails
- 9. 如何更新表中的記錄與當前記錄的ID
- 10. Rails如何更新所有記錄的列爲零的記錄?
- 11. Rails - 如何更新連接模型中的記錄值?
- 12. 在Rails中更新大型記錄集
- 13. 如何提取最新的記錄
- 14. Rails的5 - HAS_ONE:通過與:CLASS_NAME不提供相關的記錄
- 15. Rails - 更新記錄?
- 16. 返回新記錄的ID
- 17. 如何在Rails REST API中使用外部提供的ID?
- 18. 如何檢測通話記錄中的未知電話號碼(android提供商)
- 19. org.hibernate.TypeMismatchException:提供了錯誤類型的ID
- 20. 如何包括記錄id在URL時,形式紅寶石提交on Rails的
- 21. 使用提供的ID保存新對象與休眠使用提供的ID
- 22. Rails的活動記錄具有零ID提交
- 23. Rails手動提交記錄
- 24. Rails:在沒有ID的新父記錄中創建關聯記錄
- 25. 如何在提取後更新記錄
- 26. 如何從Rails中的嵌套表單記錄返回列值(記錄ID)?
- 27. 需要提供狀態代碼提供的記錄
- 28. rails - 如何設置有多個/屬於關係的新記錄的id值?
- 29. 顯示新記錄新建:編號爲id然後編輯
- 30. Rails獲得控制器中創建的新記錄的ID
你能展示那些他們是'某種散列'的情況嗎? Rails默認順序地命令它的ID - 請告訴我們你看到的是什麼! – sscirrus