多对多创造关系

时间:2011-06-11 19:17:47

标签: ruby-on-rails ruby-on-rails-3 many-to-many

有我的3个班级。请原谅我的术语不足,我对此很不错。

class User < ActiveRecord::Base
  has_many :memberships
  has_many :groups, :through => :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships
  has_many :users, :through => :memberships
end

class Membership < ActiveRecord::Base
  belongs_to :group
  belongs_to :user
end

在我的Group Controller中,我想在create方法

中执行以下操作
@user = User.first 'Confirmed that this user exists
@group = @user.groups.new(params[:group])

if @group.save
  ... etc

我遇到的问题是成员资格表是空白的,如果我转到rails控制台,并输入Membership.all,它会被清空,但是该组会生成。

但是,如果我转到控制台并执行以下操作,它将正确生成成员资格行

@user = User.first
@user.groups.create(:name => "name")
Membership.all

会员资格正确关联。

我在控制器中做错了吗?

感谢帮助伙伴/加尔斯!

1 个答案:

答案 0 :(得分:0)

尝试在控制器中使用.build而不是.new,如下所示:

@group = @user.groups.build(params[:group])