Как добавить некоторые ограничения, чтобы не допустить двусторонних отношений в ROR - PullRequest
1 голос
/ 31 декабря 2010

Я использую ruby ​​на рельсах для разработки какой-то системы. В моей системе у меня есть две модели, а именно course и course_prerequisite. Курс A может быть обязательным условием для курса B, но курс B никогда не должен быть предварительным условием назад к курсу A. Как я могу наладить такого рода отношения в моей системе?

1 Ответ

0 голосов
/ 31 декабря 2010

Один из способов, о котором я думаю, - это проверки:

class Course < ActiveRecord::Base

 has_many :course_prerequisites

 belongs_to :user

 validate :course_prerequisites

 private

 def course_prerequisites
   unless user.completed_all_prerequisites(course_prerequisites)
     errors.add_to_base("Must complete all prerequisites")
   end   
 end

end

Нечто подобное. Обратите внимание, что добавление ошибки программно не может сделать вашу модель недействительной. Если это произойдет с вами (попробуйте), либо создайте исключение, либо посмотрите, подходит ли модель перед сохранением.

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