Un modo è
Job.all.select{|j| j =~ /^\d+$/}
ma non sarà efficiente come la versione MySQL.
Un'altra possibilità è usare un ambito denominato per nascondere il brutto SQL:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Allora hai Job.all_digits
.
Nota che nel secondo esempio stai assemblando una query per il database, quindi regex_str
deve essere una stringa regex MySQL invece di un oggetto Ruby Regex, che ha una sintassi leggermente diversa.