【发布时间】:2014-05-26 18:19:16
【问题描述】:
我在 Rails 中有一个非常独特的“未定义方法错误”案例。我有一个具有“obligatedAmount”和“awardAmount”属性的任务订单模型。创建新任务订单时,我的业务规则之一是“obligatedAmount”不能大于“awardAmount”。所以确保这一点,我做了一个自定义验证:
validate :check_amount_obilgated
validates_presence_of :awardAmount
validates_presence_of :obligatedAmount
def check_amount_obilgated #cannot be greater than contract award amount
if obligatedAmount > awardAmount
errors.add(:obligatedAmount, "The Obligated Amount cannot be greater than the Award Amount")
end
end
这很好用。但是,如果我创建一个新的任务订单并将“obligatedAmount”或“awardAmount”留空,我 Rails 会将我带到错误页面,并显示错误 sn-p:
undefined method `>' for nil:NilClass'
def check_amount_obilgated #cannot be greater than contract award amount
if obligatedAmount > awardAmount
errors.add(:obligatedAmount, "The Obligated Amount cannot be greater than the Award Amount")
end
end
所以我想问题是,如果缺少一个或两个值,“>”运算符将无法工作。但是,我输入了 validates_presence_of :awardAmount 和 :obligatedAmount... 有什么办法可以让验证首先启动,或者有什么办法可以解决这个错误?请告诉我。谢谢!!
【问题讨论】:
标签: ruby-on-rails methods undefined