sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo especificar Ruby regex cuando se usa Active Record en Rails?

Una forma es

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

pero no será tan eficiente como la versión de MySQL.

Otra posibilidad es usar un alcance con nombre para ocultar el feo SQL:

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

Entonces tienes Job.all_digits .

Tenga en cuenta que en el segundo ejemplo, está ensamblando una consulta para la base de datos, por lo que regex_str debe ser una cadena MySQL regex en lugar de un objeto Ruby Regex, que tiene una sintaxis ligeramente diferente.