Eine Möglichkeit ist
Job.all.select{|j| j =~ /^\d+$/}
aber es wird nicht so effizient sein wie die MySQL-Version.
Eine andere Möglichkeit besteht darin, einen benannten Gültigkeitsbereich zu verwenden, um das hässliche SQL zu verbergen:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Dann haben Sie Job.all_digits
.
Beachten Sie, dass Sie im zweiten Beispiel eine Abfrage für die Datenbank zusammenstellen, also regex_str
muss ein MySQL-Regex-String anstelle eines Ruby-Regex-Objekts sein, das eine etwas andere Syntax hat.