2010-05-19 91 views
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`) 

在我的代碼,我檢索用戶的好友 - >朋友= 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) 

是怎麼回事?

+0

用戶不是數組 – keruilin 2010-05-19 23:08:48

+0

'friends'是'user.friends'。好。所以你試圖把'user'添加爲他自己的'friend'? – 2010-05-19 23:25:28

+0

是的。如果我試圖保存到數據庫,我想要拋出一個異常。但是,我只是想將用戶自己添加到他的一系列朋友中,作爲我想傳遞給控制器​​的一些業務邏輯的一部分。不保存到數據庫。 – keruilin 2010-05-19 23:50:04

回答

0

如果我的理解正確,您試圖添加user作爲user的朋友,即您的user.iduser_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 } 

編輯

好了,現在我明白了:]

保存到數據庫之前,刪除userfriends array:

friends.reject{ |f| f.id == user.id } 
+1

user_with_all_those_homies不是數組。 – keruilin 2010-05-19 23:08:00

相關問題