0
我對Ruby on Rails相當陌生。我正在使用ruby 1.9.3和rails 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 2012-08-16 14:02:02