如何在任何一方编写带有评估的OR语句

时间:2014-06-25 18:56:03

标签: ruby ruby-on-rails-4

我有以下代码:

def custom_validation
    errors[:base] << "You must enter two street names" if self.streetone.blank? || self.streettwo.blank?
    errors[:base] << "You must enter a valid 5-digit zipcode" if self.zipcode.blank? || ( self.zipcode.count != 5 )
end

关于zipcode的第二条声明引发了错误:wrong number of arguments (0 for 1+),但我不确定如何改进它。

1 个答案:

答案 0 :(得分:1)

字符串上的

count没有按照您的想法执行:

  

count([other_str] +)→fixnum

     

每个other_str参数定义要计数的一组字符。该   这些集合的交集定义了要在str中计数的字符。任何   以插入符号^开头的other_str被否定。序列c1-c2   表示c1和c2之间的所有字符。反斜杠字符   </code>可用于转义<code>^或 - ,否则将被忽略   除非它出现在序列的结尾或other_str的结尾。

使用length代替

errors[:base] << "You must enter a valid 5-digit zipcode" if self.zipcode.blank? || 
 ( self.zipcode.length!= 5 )