Нужна помощь в настройке ассоциации из нескольких таблиц Rails4 mongoId

У меня проблема с настройкой ассоциации здесь, в то время как Учитель устанавливает свою доступность. Преподаватель может устанавливать доступность только для тех курсов, на которые он зарегистрирован. Список курсов предварительно определен из таблицы CourseType.

Во время регистрации учителя пользователю необходимо выбрать курсы, которые учитель может преподавать.

Таким образом, для учителя при настройке доступности должны быть видны только эти курсы.

class TeacherDetail < UserDetail
  include Mongoid::Document


  has_one :user, as: :user_type

  has_and_belongs_to_many :courses, class_name: "CourseType", inverse_of: :course_type, autosave: true

  accepts_nested_attributes_for :user


end

class CourseType
  include Mongoid::Document
  include Mongoid::Timestamps

  field :type, type: String
  field :name, type: String

  auto_increment :type_id

  has_and_belongs_to_many :teacher_details, class_name: "TeacherDetail", inverse_of: :teacher_id, autosave: true
end

class TeacherAvailibility

  include Mongoid::Document
  include Mongoid::Timestamps

  include RailsAdmin::TeacherAvailabilityRailsAdminConcern

  field :date, type: Date
  field :start_time, type: String
  field :end_time, type: String
  field :cost, type: Float

  belongs_to :teacher_detail

end

person Ankush Ganatra    schedule 09.05.2015    source источник


Ответы (1)


Отношения должны быть такими

class TeacherDetail has_many :courses end

class CourseType belong_to :teacher end

class TeacherAvailability has_one :teacherDetail, through: :course_type end

Надеюсь я правильно понял ваш вопрос

Но mongoDB не поддерживает has_many через . вы можете искать решение здесь.

Как реализовать has_many: через отношения с Mongoid и монгодб?

person Hemali    schedule 09.05.2015
comment
1) Преподаватель может установить множественную доступность для разных курсов. 2) Я использую mongodb, поэтому он не будет работать с ним. - person Ankush Ganatra; 09.05.2015
comment
ой, я забыл ограничения mongodb. я нашел ответ в этом посте. Надеюсь, поможет. Ответ Стива, я чувствую, сработает для вас. «как реализовать имеет много отношений с mongoid и mongodb»> stackoverflow.com/questions/7000605/ - person Hemali; 09.05.2015
comment
(Извините, я относительно новичок в рельсах). Поэтому не уверен, что это полностью решает мою проблему. При этом я до сих пор не уверен в том, как я могу установить только несколько из тех типов курсов, которые были связаны с учителем. - person Ankush Ganatra; 09.05.2015
comment
Таким образом, в этом случае учитель может преподавать 5 разных языков, но, устанавливая доступность, он может сказать.. Я доступен с 12:00 до 13:00 для курса A, но для курса B я доступен только в течение получаса. в другой день.. - person Ankush Ganatra; 09.05.2015
comment
Здесь я хочу, чтобы пользователь выбирал только те курсы, на которые он зарегистрирован. - person Ankush Ganatra; 09.05.2015
comment
может ли это быть полезно. 1) У учителя много курсов 2) курс принадлежит учителю - благодаря этому отношению, когда вы выполняете учителя. курсы. вы получите все курсы, на которые зарегистрирован учитель, 3) курс имеет много доступных 4) доступность принадлежит учителю и курсу .. Сюда. вы можете получить, какой учитель доступен в какое время для какого курса - person Hemali; 09.05.2015
comment
courses = Teacher.find(1).courses это даст вам зарегистрированный курс учителей courses.each do |course| course.availability end это даст вам определенный курс и доступность конкретных учителей - person Hemali; 09.05.2015