gpt4 book ai didi

ruby-on-rails - 嵌套模型上的自定义验证错误

转载 作者:行者123 更新时间:2023-12-03 15:48:55 27 4
gpt4 key购买 nike

class Parent
has_one :child
accepts_nested_attributes_for :child
end
class Child
belongs_to :parent
end

使用嵌套对象表单,我需要向子模型添加一些额外的验证。这些并不总是在 Child 上运行,所以我不能把它们放在 validate 中。 Child 中的方法。在 Parent 中检查验证方法似乎很明智,但我无法正确添加错误消息。

这确实有效:
class Parent
...
def validate
errors[ :"child.fieldname" ] = "Don't be blank!"
end

但是我们在错误字段上丢失了像 I18n 和 CSS 突出显示这样的好东西。

这不起作用:
def validate
errors.add :"child.fieldname", :blank
end

最佳答案

您应该将它们保留在子模型中,因为这是经过验证的模型,但是,您可以使用 if: 设置条件。和 unless:

class Order < ActiveRecord::Base
validates :card_number, presence: true, if: :paid_with_card?

def paid_with_card?
payment_type == "card"
end
end

您可以对此进行多种更改,请参阅 rails 文档 http://edgeguides.rubyonrails.org/active_record_validations.html#conditional-validation 中的更多内容

我想你可以添加一个属性, created_by给 child ,并让 child 根据该验证选择要使用的验证。你可以像他们在这个答案中所做的那样做: Rails how to set a temporary variable that's not a database field

关于ruby-on-rails - 嵌套模型上的自定义验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com