将新对象添加到集合中

时间:2011-10-23 18:41:27

标签: ruby-on-rails

我有一个与User具有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>

在这种特殊情况下,我应该指出,这个特殊群体尚不存在,但应该在调用保存时创建。

我尝试使用谷歌搜索,但无法找到任何有用的东西(可能因为数百页内容与此无关的内容以我的方式出现:-()

2 个答案:

答案 0 :(得分: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

我非常确定将用户添加到尚未拥有ID的组中并不是问题,ruby可以处理此问题。

答案 1 :(得分:1)

您应首先保存该组:

@group.save
@group.users.create(:id => newUserID) # this creates & saves your user