Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment spécifier l'expression régulière Ruby lors de l'utilisation d'Active Record dans Rails ?

Une façon est

Job.all.select{|j| j =~ /^\d+$/}

mais ce ne sera pas aussi efficace que la version MySQL.

Une autre possibilité consiste à utiliser une portée nommée pour masquer le SQL laid :

  named_scope :all_digits, lambda { |regex_str|
    { :condition => [" invoice_number REGEXP '?' " , regex_str] }
  }

Ensuite, vous avez Job.all_digits .

Notez que dans le deuxième exemple, vous assemblez une requête pour la base de données, donc regex_str doit être une chaîne MySQL regex au lieu d'un objet Ruby Regex, qui a une syntaxe légèrement différente.