我有2種型號:驗證該部分的總和等於與父母總/兒童記錄
Invoice has_many :lines
Line belongs_to :invoice
我想確保Line
對於給定Invoice
比賽總的總和相關的Invoice
。
我已經試過這樣:
validate :total_amount
def total_amount
inv_id = self.invoice_id
target_amount = Invoice.find(inv_id).total
total_lines = Line.where(invoice_id: inv_id).sum(:line_value)
errors.add(:total, " should be lower or equal to the total amount of the invoice") if total_lines > target_amount
end
但
- 它並不適用於新的對象(只更新)工作
- 甚至更新系統地拋出一個錯誤
我也看到一個關於AssociatedValidator的問題,但我還沒有能夠掌握如何使用:(