我的导轨型号的百分比为'属性
我想确保所有'百分比的总和'不是>添加新值时为100。
在我的模型中,我有
validate :sum_can_not_exceed_hundred
def sum_can_not_exceed_hundred
if Result.all.sum(:percentage) > 100
errors.add(:base, :sum_can_not_exceed_hundred)
end
end
但这不适用于添加不在数据库上的记录,而这些记录已经保存。
更新: 以下似乎有效,使用了Coderhs的提示
if Result.where.not(id: self.id).sum(:percentage_share) + self.percentage_share > 100
errors.add(:base, :sum_can_not_exceed_hundred)
end
答案 0 :(得分:2)
由于您的表是新的,因此无法在Result.all上使用。尝试像这样修改代码
validate :sum_can_not_exceed_hundred
def sum_can_not_exceed_hundred
sum = if self.id
Result.all.sum(:percentage)
else
self.percentage + Result.all.sum(:percentage)
end
errors.add(:base, :sum_can_not_exceed_hundred) if sum > 100
end
end