Ett sätt är
Job.all.select{|j| j =~ /^\d+$/}
men det kommer inte att vara lika effektivt som MySQL-versionen.
En annan möjlighet är att använda ett namngivet scope för att dölja den fula SQL:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Då har du Job.all_digits
.
Observera att i det andra exemplet sammanställer du en fråga för databasen, så regex_str
måste vara en MySQL regex-sträng istället för ett Ruby Regex-objekt, som har en något annorlunda syntax.