Mysql
 sql >> Database >  >> RDS >> Mysql

Come specificare l'espressione regolare Ruby quando si utilizza Active Record in Rails?

Un modo è

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

ma non sarà efficiente come la versione MySQL.

Un'altra possibilità è usare un ambito denominato per nascondere il brutto SQL:

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

Allora hai Job.all_digits .

Nota che nel secondo esempio stai assemblando una query per il database, quindi regex_str deve essere una stringa regex MySQL invece di un oggetto Ruby Regex, che ha una sintassi leggermente diversa.