【发布时间】:2016-01-25 22:54:47
【问题描述】:
我有两个类负责属性验证:
class NameValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
message = options.fetch(:message, I18n.t('errors.attributes.name.invalid'))
record.errors[attribute] << message unless NameValidator.valid_name?(value)
end
def self.valid_name?(name)
name =~ /\A[a-z][\w\p{Blank}]+\z/i
end
end
第二个
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
message = options.fetch(:message, I18n.t('errors.attributes.email.invalid'))
record.errors[attribute] << message unless EmailValidator.valid_email?(value)
end
def self.valid_email?(email)
email =~ /\A.+@.+\..+\z/i
end
end
它们基本相同。我应该从一个具有受保护实用程序方法的类中继承它们还是什么?
【问题讨论】:
-
恕我直言,这对codereview.stackexchange.com来说是个好问题
标签: ruby-on-rails ruby refactoring code-duplication