Что бы я делал, это игнорировать формат и проверять числовое содержимое:
var originalPhoneNumber = "415-555-1212";
function isValid(p) {
var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/;
var digits = p.replace(/\D/g, "");
return phoneRe.test(digits);
}
Я бы порекомендовал взглянуть на Discard
https://github.com/jhawthorn/discard#why-not-paranoia-or-acts_as_paranoid
Он выполняет аналогичную задачу, не переопределяя метод activerecord, используя более простой подход, заключающийся в предоставлении удобных методов для скрытия программно удаленных записей. В документации есть раздел о том, почему автор считает, что это лучше, чем параноик или паранойя.