Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como especificar Ruby regex ao usar o Active Record no Rails?


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

mas não será tão eficiente quanto a versão do MySQL.

Outra possibilidade é usar um escopo nomeado para esconder o SQL feio:
  named_scope :all_digits, lambda { |regex_str|
    { :condition => [" invoice_number REGEXP '?' " , regex_str] }
  }

Então você tem Job.all_digits .

Observe que no segundo exemplo, você está montando uma consulta para o banco de dados, então regex_str precisa ser uma string MySQL regex em vez de um objeto Ruby Regex, que tem uma sintaxe ligeiramente diferente.