如何构建具有多种关系的对象

时间:2015-06-11 11:15:39

标签: ruby-on-rails ruby activerecord

我有3个模型User,Course和Group。他们的关系如下

user.rb

has_and_belongs_to_many :courses
  belongs_to :group

group.rb

has_many :users
  belongs_to :course

course.rb

has_many :groups,  dependent: :destroy
  has_and_belongs_to_many :users

我想创建一个新组。如何构建组对象?我的用户和课程对象在

之下
   def new
    @user = User.find(current_user.id)
    @course = Course.find(params[:course])
    @group = need to build object here
  end

以前我曾经做过类似的事情

@group = @user.groups.build

但现在我也有@course对象。怎么办呢?

2 个答案:

答案 0 :(得分:4)

以下是您可以做的事情:

 def new
    @user = User.find(current_user.id)
    @course = Course.find(params[:course])
    @group = @user.build_group(course: @course)
    # you can do @user.create_group!(course: @course) to create
    # the object in-place instead of in memory.
 end

答案 1 :(得分:1)

   def new
    @user = User.find(current_user.id)
    @course = Course.find(params[:course])
    @group = @course.build_group(:user => @user)
  end

试试这个