je l'association suivante dans mon modèle d'utilisateur:Pourquoi obtenir une erreur d'enregistrement actif lorsque vous essayez de travailler sur des baies?
has_and_belongs_to_many :friends, :class_name => 'User', :foreign_key => 'friend_id'
Je la contrainte d'unicité suivante dans ma table user_users:
UNIQUE KEY `no_duplicate_friends` (`user_id`,`friend_id`)
Dans mon code, je suis en train de récupérer les amis d'un utilisateur -> amis = user.friends. friends est un tableau.
J'ai un scénario où je veux ajouter l'utilisateur avec tous ces amis au tableau d'amis. Ex:
friends << user
Cependant, je reçois l'erreur suivante:
ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '18-18' for key 'no_duplicate_friends': INSERT INTO `users_users` (`friend_id`, `user_id`) VALUES (18, 18)
Qu'est-ce qui se passe?
utilisateur est pas un tableau – keruilin
'friends' est le' user.friends'. D'accord. alors vous essayez d'ajouter le 'user' comme son propre' ami '? –
Oui. Je voudrais qu'une exception soit levée si j'essayais d'enregistrer dans la base de données. Cependant, je veux juste ajouter l'utilisateur lui-même à son tableau d'amis dans le cadre d'une logique métier que je veux transmettre à un contrôleur. Ne pas enregistrer dans la base de données. – keruilin