Добавить новый объект в коллекцию - PullRequest
3 голосов
/ 23 октября 2011

У меня есть модельная группа с отношением has_many к пользователю. В своем коде я хочу добавить нового пользователя в группу.

Я пытался

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

но я получаю ошибку, что пользователи недействительны:

#<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>

В этом конкретном случае я должен указать, что эта конкретная группа еще не существует, но должна быть создана и во время вызова save.

Я попробовал поискать в Google, но не смог найти ничего полезного (возможно, потому, что мне мешали сотни страниц с контентом, не относящимся конкретно к этому :-()

Ответы [ 2 ]

3 голосов
/ 24 октября 2011
@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

Я уверен, что добавить пользователя в группу, у которой еще нет идентификатора, не проблема, с этим может справиться ruby.

1 голос
/ 23 октября 2011

Сначала вы должны сохранить группу:

@group.save
@group.users.create(:id => newUserID) # this creates & saves your user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...