如何在rails中禁用嵌套表单的服务器端验证

Posted

技术标签:

【中文标题】如何在rails中禁用嵌套表单的服务器端验证【英文标题】:How to disable server side validation of nested form in rails 【发布时间】:2019-09-08 18:08:41 【问题描述】:

我已经对嵌套表单进行了服务器端验证。每个都有模型并在给定的服务器端验证中。 但是,保存时模型服务器端验证工作的主要形式,我已禁用它。 但是,我也禁用了嵌套表单模型服务器端验证,但它不起作用。

 validates_presence_of   :user_mob, :message => 'please enter the mobile number.' ,unless: :skip_valid
    validates_presence_of   :address, :message => 'please enter the address.', unless: :skip_valid

//这是主模型

类用户详细信息 'u_id'

validates_presence_of :year, :message => 'please enter the details.', unless: :skip_valid
validates_presence_of :user_name, :message => 'please enter the details.', unless: :skip_valid
validates_presence_of :user_address, :message => 'please enter the details.', unless: :skip_valid
validates_presence_of :user_mobile, :message => 'please enter the details.', unless: :skip_valid
validates_presence_of :user_type, :message => 'please enter the details.', unless: :skip_valid

结束

即使我给出了除非:在 netsted 表单模型中的 skip_valid。它不工作。 如何禁用嵌套表单模型服务器端验证。

【问题讨论】:

跳过验证最简单的方法是调用save(false) false 表示您不想运行验证 另外,我在保存时将跳过验证设为 false,直到尚未工作 【参考方案1】:

validates_presence_of :year, :message => 'please enter the details.', if: ->(u) u.commit == 'submit' or u.commit == 'approve' or u.commit == '重新申请'

我们可以这样做。

【讨论】:

以上是关于如何在rails中禁用嵌套表单的服务器端验证的主要内容,如果未能解决你的问题,请参考以下文章

如果 Rails 表单中的另一个字段为空,则验证嵌套字段

如何仅更新 rails 6 中 current_user 的嵌套表单属性?

表单验证客户端和服务器端

发生错误时如何在嵌套模型中填充表单?

禁用 Symfony 2 类型中选择字段的后端验证

如何使用验证编辑嵌套的反应式表单?