为什么在尝试处理数组时遇到活动记录错误?

时间:2010-05-19 21:21:43

标签: ruby-on-rails arrays activerecord unique-constraint

我的用户模型中有以下关联:

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)

是什么给出了?

1 个答案:

答案 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 }