2011-10-23 7 views
2

J'ai un groupe de modèles avec une relation has_many à l'utilisateur. Dans mon code, je veux ajouter un nouvel utilisateur à un groupe.Ajouter un nouvel objet à la collection

J'ai essayé

newUserID = 1 
@group.users.build(:id => newUserID) 
@group.save 

mais je reçois une erreur que les utilisateurs ne sont pas valides:

#<ActiveRecord::Errors:0x7f69224f8cc8 @errors=#<OrderedHash {"users"=>[#<ActiveRecord::Error:0x7f69224257b0 @attribute=:users, @options={}, @message=:invalid, @base=#<Group id: nil, group_id: 1, created_at: nil, updated_at: nil>, @type=:invalid> 

Dans ce cas particulier, je tiens à souligner que ce groupe particulièrement n'existe pas encore, mais devrait être créé au moment de l'appel, sauvez aussi.

J'ai essayé googler mais n'a pas été en mesure de trouver quelque chose d'utile (probablement parce que des centaines de pages avec du contenu ne se rapportent pas spécifiquement à ce venir à ma façon :-()

Répondre

1

Vous devez enregistrer le premier groupe:

@group.save 
@group.users.create(:id => newUserID) # this creates & saves your user 
3
@group.users << User.create(:attr => 'value',...) # Create a new User and add it to the group (Id will be assigned automaticly) 
@group.users << User.find(user_id) # Add an existing user to the association 

Im assez sûr de son pas un problème pour ajouter un utilisateur à un groupe qui ne marche pas avoir encore une carte d'identité, Ruby peut traiter cette question.

+0

qui fait quelque chose de différent que le code OPs, bien. J'agr ee avec ce que vous dites, mais * comment * vous ajoutez un utilisateur compte. –

+0

En fait, la deuxième ligne semble intéressante. (Ma formulation a pu être trompeuse en ajoutant un nouvel utilisateur. Je ne voulais pas dire un nouvel objet utilisateur, juste un utilisateur existant qui est nouveau dans le groupe.) – Frankie

Questions connexes