Jedním ze způsobů je
Job.all.select{|j| j =~ /^\d+$/}
ale nebude tak efektivní jako verze MySQL.
Další možností je použít pojmenovaný rozsah ke skrytí ošklivého SQL:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Pak máte Job.all_digits
.
Všimněte si, že ve druhém příkladu sestavujete dotaz na databázi, takže regex_str
musí to být řetězec regexu MySQL namísto objektu Ruby Regex, který má mírně odlišnou syntaxi.