gpt4 book ai didi

ruby-on-rails - Postgres Json 字段的 Rails 自定义验证

转载 作者:行者123 更新时间:2023-11-29 12:57:51 27 4
gpt4 key购买 nike

不确定解决此问题的最佳方法。

假设我有字段容量,这是一个 Postgres jsonb 数据类型,我需要验证键值是否存在。在我的表单中,我正在初始化以下能力:

{ reception: "", dinner: "" }

我需要确保(使用 Rails 验证)如果在没有输入这两个值的情况下进入 json,则会抛出错误,即:

{ reception: "1000", dinner: "300" }

最好的方法是什么?我可以在客户端毫无问题地做到这一点,但想要一个后备服务器端。服务器端的容量永远不会为零,因为我已经如上所述对其进行了初始化,所以不能只调用正常的 presence_of 验证。

这样的事情可以接受吗?或者有更好的方法吗?

def capacities_has_values
if capacities.present?
check_capacities(capacities)
end
end

def check_capacities(capacities)
capacities.each do |k, v|
if k[v] != nil
errors.add(:capacities, "Please add #{k.to_s} capacity") unless k[v].is_integer?
end
end
end

谢谢

ETA 这样做:

class String
def is_integer?
self.to_i.to_s == self
end
end

最佳答案

您的代码看起来不错,但在我审查时发现某些条件不正确,这是更正后的 check_capacities 方法。

我假设 capacities = { reception: "1000", dinner: "300"}

def check_capacities(capacities)
capacities.each do |k, v|
unless v.present?
errors.add(:capacities, "Please add #{k.to_s} capacity")
else
errors.add(:capacities, "Please add #{k.to_s} capacity in numbers") unless v.to_i.is_integer?
end
end
end

关于ruby-on-rails - Postgres Json 字段的 Rails 自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38477912/

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