Ruby on rails 在创建模型实例时,如何使has_和_属于_多个关联

Ruby on rails 在创建模型实例时,如何使has_和_属于_多个关联,ruby-on-rails,activerecord,associations,ruby-on-rails-5,has-and-belongs-to-many,Ruby On Rails,Activerecord,Associations,Ruby On Rails 5,Has And Belongs To Many,我试图找出如何将这门课程与现有的学生联系起来,使他们与has_和Owny_联系起来。下面是我的关联模式。我很难创建每个实例并输入它们的特定关联 c = Course.create name:"Math1", ?? 嗯。。在has_和_属于_许多关联中,您不必担心中间的表。您可以找到通过这种关联类型添加到模型中的方法 所以,一种方法是通过传递一个学生ID数组,如: ActiveRecord::Schema.define(version: 20170127225124) do create_

我试图找出如何将这门课程与现有的学生联系起来,使他们与has_和Owny_联系起来。下面是我的关联模式。我很难创建每个实例并输入它们的特定关联

c = Course.create name:"Math1", ??

嗯。。在has_和_属于_许多关联中,您不必担心中间的表。您可以找到通过这种关联类型添加到模型中的方法

所以,一种方法是通过传递一个学生ID数组,如:

ActiveRecord::Schema.define(version: 20170127225124) do

  create_table "courses", force: :cascade do |t|
    t.string   "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "students", force: :cascade do |t|
    t.string   "username"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "students_courses", id: false, force: :cascade do |t|
    t.integer "students_id"
    t.integer "courses_id"
    t.index ["courses_id"], name: "index_students_courses_on_courses_id"
    t.index ["students_id"], name: "index_students_courses_on_students_id"
  end

end
您还可以使用create方法:

student = Student.create username: "John"
c = Course.create name: "Math1", student_ids: [student.id]
此外,请小心使用联接表。默认情况下,rails希望它是按字母顺序排列的,而学生也应该按字母顺序排列。为此,我通常更喜欢使用
create\u join\u table
命令(参考)

c.students.create({username: "John"})