У меня есть 2 модели, такие как:
class Father < ActiveRecord::Base
has_many :children
accepts_nested_attributes_for :children
end
class Child < ActiveRecord::Base
belongs_to :father
validate :validate_money
def validate_money
children = Child.where(id: self.father.id)
sum_of_children_pocket_money = my_func # function for getting sum of all pocket money of all children
if sum_of_children_pocket_money > self.father.money
errors.add(:pocket_money, "My error message!!!")
end
end
end
и изначально у меня есть:
и когда pass_attributes для обновления клиента (id = 1), как
{
id: 1,
name: "Father 1",
money: 1000,
children: [
{
name: "Child 1",
id: 1,
pocket_money: 500
}
]
}
и затем я отправляю для обновления:
{
id: 1,
name: "Father 1",
money: 2000,
children: [
{
name: "Child 1",
id: 1,
pocket_money: 1500
}
]
}
Итак, я получаю ошибку в своей проверке, потому что она начинает sum_of_children_pocket_money > self.father.money
сравнение и sum_of_children_pocket_money
равно 1500, но self.father.money
все еще 1000. Как я могу это исправить?