【发布时间】:2016-07-20 09:51:34
【问题描述】:
不确定解决此问题的最佳方法。
假设我有字段容量,它是 Postgres jsonb 数据类型,我需要验证键是否存在值。在我的表格中,我正在初始化以下能力:
{ reception: "", dinner: "" }
我需要确保(使用 Rails 验证)如果在没有输入这两个值的情况下进入该 json,则会引发错误,即:
{ reception: "1000", dinner: "300" }
最好的方法是什么?我可以在客户端毫无问题地做到这一点,但想要一个后备服务器端。服务端的容量永远不会为零,因为我已经像上面那样初始化了它,所以不能只调用正常的存在验证。
这样的事情可以接受吗?还是有更好的方法?
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
【问题讨论】:
标签: ruby-on-rails json postgresql validation