2012-01-13 89 views
1

我正在使用ar-extensions gem在Rails 2.3.11中進行批量插入,並且想知道插入忽略的語法是什麼。如果我只是這樣做:帶有擴展名的rails批量插入:如何插入IGNORE?

User.import friends 

然後我得到重複鍵錯誤。我可以試試這個:

User.import friends, :on_duplicate_key_update => [:first_name] 

但是,如果我真的不希望更新它,然後必須有某種方式來只是做一個INSERT忽略不計。有人知道這個適當的語法嗎?

+0

怎麼樣傳遞空數組':on_duplicate_key_update'? :-) – 2012-01-13 02:38:10

+0

實際上很抱歉,看起來像:on_duplicate_key_update => [:first_name]引發錯誤,「ArgumentError:無效的參數!」所以在任何情況下這都不是一個有效的解決方案 – galarant 2012-01-13 02:42:55

+0

因此,這是一個比完整答案更好的解決方法,但可以通過簡單地避免將模型對象添加到已存在於表中的導入數組來實現此項工作。關於上面的例子,這可以如下實現。比方說,我們是通過添加好友的對象逐一填充的朋友: 朋友+ = [朋友] 我們能避免簡單地做增加麻煩的對象: 朋友+ = [朋友]如果User.find_by_id(朋友! ID) 如果我們這樣做,那麼重複鍵的問題就變得沒有意義了。 – galarant 2012-01-13 05:14:54

回答

0

因此,這是一個比完整答案更多的解決方法,但可以通過簡單地避免將模型對象添加到已存在於表中的導入數組來實現此目的。關於上面的例子,這可以如下實現。比方說,我們是通過添加好友的對象填充的朋友一個接一個:

friends += [friend] 

我們能避免簡單地做增加麻煩的對象:

friends += [friend] if !User.find_by_id(friend.id)