gpt4 book ai didi

ruby-on-rails - 模型中的 Rails 条件验证

转载 作者:行者123 更新时间:2023-12-04 01:46:45 25 4
gpt4 key购买 nike

我有一个 Rails 3.2.18 应用程序,我正在尝试对模型进行一些条件验证。

在调用模型中有两个字段:location_id(它是与预定义位置列表的关联)和:location_other(这是一个文本字段,有人可以在其中输入字符串或在这种情况下输入地址)。

我想要做的是在创建对 :location_id 或 :location_other 被验证存在的调用时使用验证。

我已经通读了 Rails 验证指南,但有点困惑。希望有人可以阐明如何使用条件轻松地做到这一点。

最佳答案

我相信这就是你要找的:

class Call < ActiveRecord::Base
validate :location_id_or_other

def location_id_or_other
if location_id.blank? && location_other.blank?
errors.add(:location_other, 'needs to be present if location_id is not present')
end
end
end
location_id_or_other是一种自定义验证方法,用于检查是否 location_idlocation_other是空白的。如果它们都是,那么它会添加一个验证错误。如果 location_id的存在和 location_other独家或 ,即只能存在两者之一,不能同时存在,也不能同时存在,那么您可以对 if 进行以下更改阻塞在方法中。
if location_id.blank? == location_other.blank?
errors.add(:location_other, "must be present if location_id isn't, but can't be present if location_id is")
end

替代解决方案
class Call < ActiveRecord::Base
validates :location_id, presence: true, unless: :location_other
validates :location_other, presence: true, unless: :location_id
end

如果存在 location_id,此解决方案(仅)有效和 location_other是独占或。

查看 Rails Validation Guide了解更多信息。

关于ruby-on-rails - 模型中的 Rails 条件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641143/

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