0

我有这个验证:

if self.var_a.blank? || self.var_b.blank? || self.var_c.blank?
  self.errors[:base] << "Error." 
end

如果三个变量都设置了,或者三个变量都没有设置,那么一切正常。但是如果设置了 3 个或 3 个中的 2 个,我需要显示错误。

我在一段时间内与这个问题作斗争,但无法有效地编写它。

4

2 回答 2

4
if [var_a,var_b,var_c].any?{|m| m.blank?}
  self.errors[:base] << "Error." 
end

或者

self.errors[:base] << "Error." if [var_a,var_b,var_c].any?(&:blank?)
于 2013-11-14T19:56:36.113 回答
0

我在这里猜测语法(不知道 ruby​​).. 但逻辑应该是这样的:

if [var_a,var_b,var_c].any?{|m| m.blank?} && ![var_a,var_b,var_c].all?{|m| m.blank?}
  self.errors[:base] << "Error." 
end
于 2013-11-15T07:33:37.450 回答