私は次のモデルを持っています:
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
無駄なカスタムバリデーターを作成しようとしました( 「nil:NilClassの未定義メソッド「セクション」」というエラーSection
で新しいバリデーターを作成すると機能しません):Section
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
どうもありがとう!