Uma maneira é
Job.all.select{|j| j =~ /^\d+$/}
mas não será tão eficiente quanto a versão do MySQL.
Outra possibilidade é usar um escopo nomeado para esconder o SQL feio:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Então você tem
Job.all_digits
. Observe que no segundo exemplo, você está montando uma consulta para o banco de dados, então
regex_str
precisa ser uma string MySQL regex em vez de um objeto Ruby Regex, que tem uma sintaxe ligeiramente diferente.