2016-06-18 2 views
0

У меня есть следующие модели:модели Проектирование с Ruby On Rails

  • Институт
  • Студент
  • классе
  • курс

Требования:

  1. В классной комнате может быть много курсов. Курс может принадлежать многим классам.
  2. В классной комнате может быть много учеников. Студент может принадлежать многим классным комнатам.
  3. Студент может пройти много курсов. Курс может принадлежать многим студентам.
  4. В институте много учеников, много классных комнат и много курсов.

Я пытаюсь создать ассоциации для вышесказанного: Можно ли быть точным?

  1. институт: has_and_belongs_to_many: студенты | has_many: классные комнаты | has_many: курсы
  2. Студент: has_and_belongs_to_many: институты | has_and_belongs_to_many: классные комнаты | has_many: курсы | принадлежит_от: институт
  3. Класс: has_and_belongs_to_many: students | has_many: курсы | принадлежит_от: институт
  4. Курс: has_and_belongs_to_many: students | has_many: классные комнаты | принадлежит_от: институт

Как использовать отношения «через» здесь?

+1

Пожалуйста, обратитесь [Active Record общества] (http://guides.rubyonrails.org/association_basics.html) на Rails Guides – Lahiru

ответ

0

ли подобное для Classroom ассоциаций и Cource ассоциации

пробег:

ruby homework.rb 

#homework.rb 
require 'active_record' 

`rm foobar.db` 

class User < ActiveRecord::Base 
    establish_connection adapter: 'sqlite3', database: 'foobar.db' 
    connection.create_table table_name, force: true do |t| 
    t.string :name 
    end 
    connection.create_table :institutes_users, id: false do |t| 
    t.integer :user_id 
    t.integer :institute_id 
    end 

    has_and_belongs_to_many :institutes 
end 

class Institute < ActiveRecord::Base 
    establish_connection adapter: 'sqlite3', database: 'foobar.db' 
    connection.create_table table_name, force: true do |t| 
    t.string :name 
    end 
    connection.create_table :institutes_students, id: false do |t| 
    t.integer :student_id 
    t.integer :institute_id 
    end 

    has_and_belongs_to_many :users 
    has_and_belongs_to_many :students 
    has_many :classrooms 
    has_many :courses 
end 

class Student < ActiveRecord::Base 
    establish_connection adapter: 'sqlite3', database: 'foobar.db' 
    connection.create_table table_name, force: true do |t| 
    t.string :name 
    end 
    connection.create_table :classrooms_students, id: false do |t| 
    t.integer :student_id 
    t.integer :classroom_id 
    end 

    has_and_belongs_to_many :institutes 
    has_and_belongs_to_many :classrooms 
    has_many :courses 
end 

class Classroom < ActiveRecord::Base 
    establish_connection adapter: 'sqlite3', database: 'foobar.db' 
    connection.create_table table_name, force: true do |t| 
    t.string :name 
    t.references :institute 
    end 

    belongs_to :institute 
    has_and_belongs_to_many :students 
end 

class Course < ActiveRecord::Base 
    establish_connection adapter: 'sqlite3', database: 'foobar.db' 
    connection.create_table table_name, force: true do |t| 
    t.string :name 
    t.references :institute 
    t.references :student 
    end 

    belongs_to :institute 
    belongs_to :student 
end 
user = User.create!(name: 'John') 
institute = Institute.create!(name: 'Harvard') 
student = Student.create(name: 'Mary') 
institute.users << user 
institute.classrooms.create(name: '4th floor room') 
institute.courses.create(name: 'IT') 
institute.students << student 
student.classrooms << Classroom.create(name: '5th froor room') 
student.courses << Course.create(name: 'Biology') 
p institute.users 
p institute.classrooms 
p institute.courses 
p institute.students 
p student.classrooms 
p student.courses 
+0

Извинения. У меня нет понятия «пользователи». Я называю их «учениками» – user1175969

+0

Кроме того, курсы относятся к классам (не непосредственно к ученикам). – user1175969