У меня есть модель рельсов, которая имеет «процент» атрибутSum атрибутов в рельсах
Я хотел бы, чтобы убедиться, что сумма всех «процент» не> 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
Но это не работает для добавления записей, которые не являются на дб и те уже спасены.
Update: Следующая, кажется, работает, используя подсказку из Coderhs
if Result.where.not(id: self.id).sum(:percentage_share) + self.percentage_share > 100
errors.add(:base, :sum_can_not_exceed_hundred)
end
вы можете вызвать метод ## before_create: check_percentage – Milind