不确定最好的方法。
假设我有字段容量,这是一个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
答案 0 :(得分:2)
您的代码看起来不错,但在我查看时发现有些条件不正确,以下是更正后的check_capacities方法。
我假设容量= {接收:“1000”,晚餐:“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