0

我对 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

我已经在其他情况下测试了自定义相等方法,它似乎工作正常。但是,当我使用上述模型时,即使描述/位置不同,模型错误也总是会发生。

4

1 回答 1

0

在您的比较运算符中:

if self_compare_id != comparison_compare_id

真的应该

if self_compare_id == comparison_compare_id
于 2012-08-16T10:54:53.953 回答