Един от начините е
Job.all.select{|j| j =~ /^\d+$/}
но няма да бъде толкова ефективен, колкото версията на MySQL.
Друга възможност е да използвате именуван обхват, за да скриете грозния SQL:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
След това имате Job.all_digits
.
Имайте предвид, че във втория пример сглобявате заявка за базата данни, така че regex_str
трябва да бъде MySQL низ за регулярни изрази вместо Ruby Regex обект, който има малко по-различен синтаксис.