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

의 인스턴스를 생성 할 때 has_and_belongs_to_many 연결을 만드는 방법. 아래는 연관성이있는 내 스키마입니다. 나는 각각의 인스턴스를 만들고 문제를 해결하는 데 어려움을 겪고 있습니다.내가 has_and_belongs_to_many와 기존의 학생들에게이 과정을 연결하는 방법을 알아 내려고 노력하고있어 모델

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 

답변

0

음에 .. has_and_belongs_to_many 협회에 당신은 중간 테이블에 대해 걱정할 필요가 없습니다. Here이 유형의 연결을 통해 모델에 추가 된 메소드를 찾을 수 있습니다.

student = Student.create username: "John" 
c = Course.create name: "Math1", student_ids: [student.id] 

당신은 또한 만드는 방법을 사용할 수 있습니다 :

그래서, 당신이 할 수있는 한 가지 방법은 같은 학생 ID의 배열을 전달하는 것입니다 또한

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

을 조심 조인 테이블로. 기본적으로 레일스는 알파벳순으로 예상하므로 대신 courses_students이됩니다. 그 목적을 위해 나는 보통 create_join_table 명령 (참조 here 참조)을 사용하는 것을 선호합니다.