Using join tables in ruby on rails

前端 未结 3 1678
难免孤独
难免孤独 2020-12-04 16:43

Lets say I have two databases: one for students and one for classes. I would like to be able to \'add\' classes to a specific student and also be able to add students to a

3条回答
  •  Happy的楠姐
    2020-12-04 17:43

    Everything true what @Jordan said, here the concrete steps to take:

    1. Create a migration: rails g model CourseStudent creates a join model for the n:m relation, and the migration to the corresponding table.
    2. Edit the migration file CreateCourseStudent so it contains the following:

      class CreateCourseStudent < ActiveRecord::Migration
        def change
          create_table :course_students do |t|
      
            # Your code comes here
            t.integer :student_id
            t.integer :course_id
      
            # Here comes the generated code 
            t.timestamps
          end
        end
      end
      
    3. Run the migration: rake db:migrate. As a result, the join table should now exist in your database.

    4. Add to the models the following code

      class Course < ActiveRecord::Base
        has_many :course_students
        has_many :students, :through => :course_students
      end
      
      class Student < ActiveRecord::Base
        has_many :course_students
        has_many :courses, :through => :course_students
      end
      
      class CourseStudent < ActiveRecord::Base
        belongs_to :student
        belongs_to :course
      end
      

    You are now able to use the methods generated by the methods belongs_to and has_many:

    • @course.students
    • @student.courses

    Try to find all the relevant facts and snippets in the Rails Guides, there you should find all information you need to get on track. Good luck!

提交回复
热议问题