Хорошо, ребята, это может быть немного запутанным, поэтому придерживайтесь меня. Позвольте мне начать с представления моих таблиц. В основном я создал четыре таблицы при миграции.Active Record DB Modeling - Ruby on Rails
- Студенты
- Учителя
- Субъекты
- Пользователь Admin
Вот мои файлы миграции:
Студенты:
def up
create_table :students, :id => false do |t|
t.integer "student_id",:primary_key => true
t.string "first_name", :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => ' ', :null => false
t.string "birthday"
t.string "subjects"
t.string "teachers"
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
Учителя:
def up
create_table :teachers, :id => false do |t|
t.integer "teacher_id", :primary_key => true
t.string "first_name"
t.string "last_name"
t.string "email", :default => ' ', :null => false
t.string "birthday"
t.string "subjects"
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
Предметы:
def up
create_table :subjects, :id => false do |t|
t.integer "subject_id", :primary_key => true
t.string "subject_name"
t.timestamps
end
end
администраторы Пользователи:
def up
create_table :admin_users, :id => false do |t|
t.integer "admin_user_id", :primary_key => true
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
end
Итак, теперь позвольте мне пройти через объяснения. В основном:
- один студент может иметь много учителей
- один учитель может иметь много студентов
- один студент может иметь много предметов
- один учитель может преподавать многие предметы
- администратор может получить доступ ко всем это (создать, отредактировать, удалить)
Я создал эти поля и настроил их на своих моделях следующим образом:
class Student < ApplicationRecord
has_and_belongs_to_many :subjects
has_and_belongs_to_many :teachers
has_many :admin_users
has_secure_password
self.primary_key = :student_id
end
class Teacher < ApplicationRecord
has_and_belongs_to_many :subjects
has_and_belongs_to_many :students
has_many :admin_users
has_secure_password
end
class Subject < ApplicationRecord
has_and_belongs_to_many :students
has_and_belongs_to_many :teachers
has_many :admin_users
# scope :search, lambda { |query| where(["name LIKE ?", "%#{query}%"])}
end
class AdminUser < ApplicationRecord
has_secure_password
scope :newest_first, lambda { order("created_at ASC") }
scope :oldest_first, lambda { order("created_at DESC") }
# scope :search, lambda { |query| where(["name LIKE ?", "%#{query}%"])}
end
Теперь я вручную ввел данные о записи данных mysql, а затем попытался вытащить записи для полей студентов и преподавателей.
Как я могу эффективно управлять своей базой данных учителями, учениками и субъектами? Есть ли что-то, что мне нужно сделать, прежде всего, чтобы сопоставить таблицы, которые у меня есть? Пожалуйста помоги. Извините, за длинную статью. Я новичок здесь. Цените свое объяснение (термин непрофессионала) и ответы.
Проверьте мои модели. Нужно ли создавать отдельную таблицу для корреляции учителей, студентов и предметов?
Сторона Примечание: Когда я подтягиваю свое поле студентов и учителей, это дает мне ошибку ActiveRecord_Associations_CollectionProxy:0x007f9c504361d0
ОШИБКА.
вас есть 't.string "учителей"' в студенческой таблице. Что вы ожидаете от возвращения ученика? –
Hi Pardeep Dhingra, я редактировал мой вопрос извините. Смущенно. –
Проверьте мои модели. Нужно ли создавать отдельную таблицу для корреляции учителей, студентов и предметов? –