如何干掉这个validate_each方法" foo"或" bar"

时间:2016-07-22 18:45:44

标签: ruby-on-rails

class CleanValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    if value .include? "foo" or "bar" or "baz" or "fiz"
      record.errors[attribute] << ("Restricted Word")
    end
  end
end

我想将限制词"foo" or "bar" or "baz" or "fiz"移出方法。

2 个答案:

答案 0 :(得分:1)

如果你重复自己,那只是不干。你在其他地方使用“foo”或“bar”或“baz”或“fiz”吗?如果没有,或者不打算,可能会过度编码将其分开。

答案 1 :(得分:0)

这是我怎么做的。将受限制的单词列表移动到单独的方法,然后测试该值是否包含在该数组中:

class CleanValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    if restricted_words.include?(value)
      record.errors[attribute] << ("Restricted Word")
    end
  end

  def restricted_words
    ['foo', 'bar', 'baz', 'fiz']
  end
end