我的用户模型中有以下关联:
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数组中。例如:
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)
是什么给出了?
答案 0 :(得分: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 }