2012-01-13 4 views
1

私はar-extensions gemを使用してRails 2.3.11で一括挿入を行い、挿入する構文が何であるか不思議です。私がしているだけの場合:ar-拡張子付きレール一括挿入:どのようにIGNOREを挿入するのですか?

User.import friends 

重複したキーエラーが発生します。私は、この試すことができます:

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

をしかし、私は実際にそれを更新したくないならば、ちょうどIGNORE INSERTを行うにはいくつかの方法が存在しなければなりません。誰かがこれに対する正しい構文を知っていますか?

+0

何 'する空の配列を渡すことについて:on_duplicate_key_update'を? :-) –

+0

実際に申し訳ありません:on_duplicate_key_update => [:first_name]は、 "ArgumentError:Invalid arguments!"というエラーをスローします。どのような場合でも有効な解決策ではありません – galarant

+0

これは完全な回答よりも回避策ですが、テーブルに既に存在するインポート配列にモデルオブジェクトを追加することを避けるだけで、この作業を行うことができます。上記の例に関して、これは以下のように達成される。のを1つずつオブジェクト友人を追加することによって、私たちは友人を移入しているとしましょう: 友人+ = [友人] 我々は、単に行うことで面倒なオブジェクトを追加することを避けることができます!+ = [友人]もしUser.find_by_id(友人 友人を。 id) これを行うと、重複キーの問題は解決しません。 – galarant

答えて

0

だから、これは完全な答えよりも回避策の詳細ですが、それは単に、すでにテーブルに存在輸入アレイにモデルオブジェクトを追加すること回避することで、この作業を行うことが可能です。上記の例に関して、これは以下のように達成される。我々はオブジェクトの友達を追加することで、友人を移入しているとしましょう一つずつ:

friends += [friend] 

私たちは、単に行うことで面倒なオブジェクトを追加することを避けることができます。

friends += [friend] if !User.find_by_id(friend.id) 
関連する問題