我有一個表offices
。在應用的插入頁面上,我有兩個用於辦公室名稱和辦公室類型的文本框,以及一個說Add Office
的按鈕。我使用jQuery來複制兩個文本框,因此用戶可以一次插入多個辦公室。用戶可以輸入辦公室名稱和類型,點擊Add Office
,在同一頁面上插入更多的辦公室,然後點擊Submit
。我想用group_by
查詢將同時創建的辦公室分組在一起。我發現每個插入行都有一個唯一鍵。我想讓一組辦公室的行共享相同的唯一密鑰。這可能嗎?插入多個記錄與每個插入的唯一鍵
回答
在控制器的操作下,您可以創建一個隨機數並在您的表上有第三個字段接受唯一密鑰。這個唯一的鍵值就是隨機數。
@unique_key = rand[99999999999]
然而,這種方法確實允許一個小99999999999分之1的機會,你將會得到同樣的unique_key
值作爲另一個辦公室。相反,您可能希望創建一個隨機散列,以減少創建副本的可能性。
@unique_key = SecureRandom.hex
爲了使這更不可能,你可以做
@unique_key = "#{SecureRandom.hex}#{SecureRandom.hex}"
這將在技術上仍是可能的,但可能性微乎其微。
這個例子是如果你使用simple_form。你想修改你自己的具體情況
<%= f.input :unique_key, :as => :hidden, :input_html => {:value => @unique_key} %>
哦,不要忘記在你的遷移中加入'add_index',以確保'unique_key'是索引,它將更好地優化你的數據庫。 – kobaltz
你真的沒有group_by
中的ActiveRecord查詢。你做有group
,但這就是如果你想對行組進行總結和計數,我認爲這不是這種情況。
相反,您可以使用group_by
對返回的結果。爲了澄清,它不會成爲查詢生成的的一部分,但它會將結果「按」某些標準「分組」,如唯一鍵,導致產生一個Hash,其中Hash中的每個條目都會有一個數組
Office.where(...some condition...).group_by(&:my_unique_key_field_name)
或者只是:使用相同的唯一密鑰辦事處
Office.all.group_by(&:my_unique_key_field_name)
請注意kobaltz答案來生成唯一的密鑰,並考慮增容改造它,如果你發現它是有用的。
祝福。
- 1. SQL觸發器插入每個插入400多條記錄
- 2. 插入行與多個鍵
- 3. 記錄插入一個
- 4. SQLite3帶參數的多個插入;只插入一條記錄
- 5. 插入多個記錄一次
- 6. 的MySQL插入記錄每一個已經存在的記錄
- 7. TSQL每個記錄加入一個cte並插入
- 8. 插入新記錄時,從一個表插入另一個表
- 9. 查詢插入每個記錄
- 10. Mysql - 選擇多個插入的記錄
- 11. SQL唯一鍵插入
- 12. 多個記錄插入與動態創建的輸入字段
- 13. 的Sql將一個記錄插入到多條記錄
- 14. 爲插入的每個外鍵插入主鍵
- 15. 插入批記錄,許多插入查詢,遊標,while循環或事務記錄每個記錄更好
- 16. Laravel插入記錄(外鍵)
- 17. 插入一行爲每個鍵
- 18. 如何在一個呼叫中用前一個記錄的鍵插入記錄?
- 19. 使用單個插入語句插入多條記錄
- 20. 插入多個記錄問題(linq EF)
- 21. Android SQLite插入多個記錄
- 22. 將多個記錄插入Access DB
- 23. symfony中插入多個記錄
- 24. Oracle SQL - 如何插入多個記錄
- 25. 插入多個記錄從Android到PHP?
- 26. 插入/更新多個記錄
- 27. 用Mongoid批量插入多個記錄?
- 28. 插入多個記錄到mysql和mysql_affected_rows()
- 29. 刪除第一個插入的記錄
- 30. 插入多個記錄並檢查一行是否有記錄
我真的不明白誰會一直在降低提問的質量!這個問題沒有錯!我要升級它。 – mjnissim