Een manier is
Job.all.select{|j| j =~ /^\d+$/}
maar het zal niet zo efficiënt zijn als de MySQL-versie.
Een andere mogelijkheid is om een benoemd bereik te gebruiken om de lelijke SQL te verbergen:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Dan heb je Job.all_digits
.
Merk op dat u in het tweede voorbeeld een query voor de database aan het samenstellen bent, dus regex_str
moet een MySQL regex-tekenreeks zijn in plaats van een Ruby Regex-object, dat een iets andere syntaxis heeft.