【发布时间】:2010-05-19 21:21:42
【问题描述】:
我的用户模型中有以下关联:
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)
什么给了?
【问题讨论】:
-
friends是user.friends。行。所以您尝试将user添加为他自己的friend? -
是的。如果我试图保存到数据库,我希望抛出一个异常。但是,我只想将用户自己添加到他的朋友数组中,作为我想传递给控制器的一些业务逻辑的一部分。不保存到数据库。
-
做朋友
标签: ruby-on-rails arrays activerecord unique-constraint