我正在做一些對保存子模型的嵌套屬性的父模型進行驗證。我的父母has_many孩子和我的驗證檢查,如果這些孩子的數量大於0.它工作正常編輯,因爲孩子已經創建並保存在數據庫,但對於新記錄它失敗,因爲計數總是返回0。我該如何解決這個問題?Rails - has_many依賴於驗證
我父模型的代碼如下所示:
class ArrendamentoContrato < ApplicationRecord
has_many :arrendamento_contrato_unidades, dependent: :destroy
validate :check_total_percentual_credito
def check_total_percentual_credito
if arrendamento_contrato_unidades.count > 0 && arrendamento_contrato_unidades.sum(&:percentual_credito).to_f != 100.0
self.errors.add :percentual_credito, I18n.t("errors.messages.percentual_credito")
end
end
end
這可以追溯到我對最後一個問題的回答,您的父母記錄的內容尚未保存,但是您希望驗證與父模型關聯的子記錄在父模型存在之前存在(在數據庫上下文中)雞蛋問題之前還有一隻雞。這就是爲什麼我提出了將邏輯移到控制器的建議,儘管我確實看到了一些問題。我期待着這個答案。 –
@CdotStrifeVII我很欣賞你的答案,我明白你的意思......但我真的不喜歡把這種類型的代碼放在控制器上......有一些方法可以在模型中實現,我相信 –
是的,我是我明白,我期待聽到其他方法。 –