2012-08-16 2 views
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 

나는 다른 상황에서 사용자 정의 평등 방법을 테스트 한 잘 작동이 나타납니다. 그러나 위의 모델을 사용할 때 설명/위치가 다른 경우에도 모델 오류가 항상 발생합니다. 당신의 비교 연산자에서

답변

0

:

if self_compare_id != comparison_compare_id 

정말해야

if self_compare_id == comparison_compare_id 
+0

즉, 조금 내 역할에 실패했다 내가 그렇게 무시 것을 확인했다고 생각 죄송합니다. 신선한 눈을 가져 주셔서 감사합니다. 전달하는 다른 사람의 이익을 위해 드디어 반환하도록 변경했습니다. self_compare_id == comparison_compare_id – ClearCarbon

관련 문제