0
저는 레일스에서 루비를 처음 사용합니다. 나는 루비 1.9.3과 레일 3.2.6을 사용하고있다. 내 모델에는 많은 Checkins가있는 파일럿이 포함되어 있습니다. 파일럿이 파일럿이 만든 마지막 체크인과 일치하는 새 체크 인을 추가하지 못하도록 내 모델에 일부 유효성 검사를 추가하려고합니다.새 인스턴스가 마지막 인스턴스와 일치하지 않도록하는 방법
class Checkin < ActiveRecord::Base
belongs_to :pilot
...
validate :must_not_match_last_checkin
def ==(comparison_checkin)
self_compare_id = checkin_compare_id self
comparison_compare_id = checkin_compare_id comparison_checkin
if self_compare_id != comparison_compare_id
return true
else
return false;
end
end
private
def must_not_match_last_checkin
if self == self.pilot.checkins.last
errors.add(:base, "Checkin is only valid if it differs from your previous checkin")
end
end
def checkin_compare_id checkin
diff = ""
if !checkin.nil?
diff = checkin.location + checkin.description
end
return diff
end
end
나는 다른 상황에서 사용자 정의 평등 방법을 테스트 한 잘 작동이 나타납니다. 그러나 위의 모델을 사용할 때 설명/위치가 다른 경우에도 모델 오류가 항상 발생합니다. 당신의 비교 연산자에서
즉, 조금 내 역할에 실패했다 내가 그렇게 무시 것을 확인했다고 생각 죄송합니다. 신선한 눈을 가져 주셔서 감사합니다. 전달하는 다른 사람의 이익을 위해 드디어 반환하도록 변경했습니다. self_compare_id == comparison_compare_id – ClearCarbon