我使用一個Rails(紅寶石1.9.3)項目acts_as_taggable_on寶石的對象很多。 我向我的管理員提供一個表單,將1..n標記添加到資源列表(讓我們說客戶端)。添加N個標籤使用acts_as_taggable_on
我沒有找到辦法做到這一點散裝。 現在我正在循環每個客戶端並添加一個標籤,然後保存該對象。 當我嘗試使用X千客戶端時,這會傷害服務器,最終導致超時。
我在想,如果有一個標籤應用到一個ActiveRecord集合或東西的方式。如果記錄在案,我深表歉意,但我無法找到任何人在任何地方做這件事。
我可以看到如何通過全部由自己做一個自定義的SQL查詢來破解它,但我更喜歡以避免黑客攻擊寶石這樣,OFC。
現在我做這樣的事情
像這樣的事情
# Client.selection returns a clients collection
Client.selection.each do |client|
tags_to_add.each{|a| client.tag_list << a}
tags_to_remove.each{|a| client.tag_list.remove(a)}
client.save
end
非常感謝您的時間。
外:好,我需要能夠去除1..1標籤(縣)的集合呢!
是否有任何特定的訂購需要使用?你可以顯示你現在使用的ruby代碼是否需要針對批量插入進行優化? – PinnyM
您的數據庫是否支持批量插入?也就是說,它是否會採取如下命令:'INSERT INTO foo(field1,field2)VALUES(1,1),(2,2),(3,3)'。這種類型的插入在一次傳遞中添加所有行,但並非所有的DBMS都支持它。 – PinnyM