我对 ruby on rails 还很陌生。我正在使用 ruby 1.9.3 和 rails 3.2.6。我的模型包含有很多签到的飞行员。我正在尝试向我的模型添加一些验证,以便飞行员可能不会添加与飞行员上次签到相匹配的新签到。
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
我已经在其他情况下测试了自定义相等方法,它似乎工作正常。但是,当我使用上述模型时,即使描述/位置不同,模型错误也总是会发生。