Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man Ruby Regex angeben, wenn man Active Record in Rails verwendet?

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.