Проверка связанных отношений после создания экземпляра - PullRequest
1 голос
/ 22 февраля 2010

У меня есть схема, где:

Студенты

  • has_and_belongs_to_many: курсы
  • has_many: оценки,: зависимые =>: уничтожить
  • has_many: назначения,: через =>: оценки

Курсы

  • has_many: назначения,: зависимые =>: уничтожить
  • has_and_belongs_to_many: студенты

Назначение

  • принадлежит_ к курсу
  • has_many: оценки, зависимые =>: уничтожить
  • has_many: студенты,: через =>: оценки

Сорт

  • принадлежит_ студенту
  • принадлежит_: назначение

Я хотел бы добавить функциональность, посредством которой, если добавляется оценка, и учащийся не принадлежит к курсу, к которому относится назначение оценки, тогда это соотношение устанавливается. Какие-нибудь предложения относительно лучшего способа сделать это? Таблица grades_courses не имеет своей собственной модели, нужно ли это делать?

Друг предложил использовать after_create, но я не знаю, как передать параметры этому.

1 Ответ

2 голосов
/ 23 февраля 2010

Как насчет наблюдателя на оценках? Как то так

class GradeObserver < ActiveRecord::Observer

  def after_create(grade)
    unless grade.assignment.course.students.include?(grade.student)
      grade.assignment.course.students << grade.student 
    end
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...