En måde er
Job.all.select{|j| j =~ /^\d+$/}
men det vil ikke være så effektivt som MySQL-versionen.
En anden mulighed er at bruge et navngivet omfang til at skjule den grimme SQL:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Så har du Job.all_digits
.
Bemærk, at i det andet eksempel samler du en forespørgsel til databasen, så regex_str
skal være en MySQL regex-streng i stedet for et Ruby Regex-objekt, som har en lidt anderledes syntaks.