У меня есть следующие модели:
class Section < ActiveRecord::Base
belongs_to :course
has_one :term, :through => :course
end
class Course < ActiveRecord::Base
belongs_to :term
has_many :sections
end
class Term < ActiveRecord::Base
has_many :courses
has_many :sections, :through => :courses
end
Я хотел бы иметь возможность сделать следующее в моей модели Section
(call_number
- это поле в Section
):
validates_uniqueness_of :call_number, :scope => :term_id
Это, очевидно, не работает, потому что Section
не имеет term_id
, , так как я могу ограничить область действия моделью отношения?
Я пыталсясоздание собственного валидатора для Section
безрезультатно (не работает, когда я создаю новый Section
с ошибкой "неопределенный метод 'section' для nil: NilClass" ):
def validate_call_number
if self.term.sections.all(:conditions => ["call_number = ? AND sections.id <> ?", self.call_number, self.id]).count > 0
self.errors[:base] << "Call number exists for term"
false
end
true
end
Большое спасибо!