0
我有以下型號:validates_uniqueness_of場範圍限定於HAS_ONE關係
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
與錯誤不工作「的零未定義的方法‘部分’: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
非常感謝!
'term'似乎總是'nil'之前保存。我認爲這是因爲'term'只能通過關係'section'來使用。 – zsalzbank
@zsalzbank它應該取決於您是否爲該部分分配了「課程」。如果您已將「課程」分配給「部分」,並且「課程」具有「術語」,則即使該部分實例是新記錄,self.term也不應爲零。 – Fabio