gpt4 book ai didi

ruby-on-rails - 仅当存在通过时才运行 Rails 包含验证

转载 作者:行者123 更新时间:2023-12-03 11:10:22 26 4
gpt4 key购买 nike

我想先验证一个字段是否存在,如果该字段没有值,则返回一条错误消息。然后假设此存在验证通过,我想运行包含验证。

现在我有:

validates :segment_type, presence: true, inclusion: { in: SEGMENT_TYPES }

我尝试将其拆分为两个单独的验证,如下所示:
validates :segment_type, presence: true
validates :segment_type, inclusion: { in: SEGMENT_TYPES }

但问题在于上述两种尝试,当 segment_type 中不包含任何值时字段,我收到两个响应的错误消息:
Segment type can't be blank
Segment type is not included in the list

在这种情况下,我只想要“段类型不能为空”而不是第二条消息。

有什么方法可以让 Rails 执行此条件验证并为我提供所需的错误消息瀑布,而无需定义自定义函数,例如 segment_type_presence_and_inclusion_check按顺序检查这些条件并用 validate :segment_type_presence_and_inclusion_check 调用它?

最佳答案

传入 ifinclusion检查存在的选项

validates :segment_type,
presence: true,
inclusion: { in: SEGMENT_TYPES, if: :segment_type_present? }

private

def segment_type_present?
segment_type.present?
end

您也可以使用 proc
inclusion: { in: SEGMENT_TYPES, if: proc { |x| x.segment_type.present? } }

关于ruby-on-rails - 仅当存在通过时才运行 Rails 包含验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30669799/

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