【发布时间】:2016-12-05 15:41:32
【问题描述】:
我正在对保存子模型嵌套属性的父模型进行一些验证。我的父母 has_many 孩子和我的验证检查这些孩子的数量是否大于 0。它适用于编辑,因为孩子已经创建并保存在 db 上,但对于新记录它失败,因为计数总是返回 0。我该如何解决?
我的父模型代码如下:
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 我很欣赏你的回答,我明白你的意思......但我真的不喜欢把那种代码放在控制器上......必须有一些方法可以做到这一点模型,我相信
-
是的,我明白这一点,我期待听到其他方法。
-
@CdotStrifeVII 将方法计数更改为大小解决了问题......现在,它可以解决问题!
-
没关系,我明白了。
标签: ruby-on-rails activerecord