0

ユーザーモデルには次の関連付けがあります。

has_and_belongs_to_many :friends, :class_name => 'User', :foreign_key => 'friend_id'

user_usersテーブルに次の一意性制約があります。

UNIQUE KEY `no_duplicate_friends` (`user_id`,`friend_id`)

私のコードでは、ユーザーの友達を取得しています-> friends=user.friends。友達は配列です。

それらすべての友達を持つユーザーを友達配列に追加したいというシナリオがあります。元:

friends << user

ただし、次のエラーが発生します。

ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '18-18' for key 'no_duplicate_friends': INSERT INTO `users_users` (`friend_id`, `user_id`) VALUES (18, 18)

何が得られますか?

4

1 に答える 1

0

私がそれを正しく理解していれば、あなたはuserの友達として追加しようとしています。userつまり、あなたはuser.idにいuser_with_all_those_homiesます。

次のようなものがあなたの問題を解決するかもしれないと私は信じています:

# assuming user_with_all_those_homies is an array of users
user_with_all_those_homies.reject{ |u| u.id == user.id }

編集

わかりました、今私は理解しました:]

データベースに保存する前に、配列userからを削除します。friends

friends.reject{ |f| f.id == user.id }
于 2010-05-19T22:56:37.210 に答える