Mis*_*hko 13 regex mysql activerecord ruby-on-rails ruby-on-rails-3
为了得到所有invoice_number纯数字的工作我做:
Job.where("invoice_number REGEXP '^[[:digit:]]+$'")
Run Code Online (Sandbox Code Playgroud)
是否可以通过在Ruby而不是MySQL中指定正则表达式来做同样的事情?
Mar*_*mas 12
一种方法是
Job.all.select{|j| j =~ /^\d+$/}
Run Code Online (Sandbox Code Playgroud)
但它不如MySQL版本那么高效.
另一种可能性是使用命名范围来隐藏丑陋的SQL:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Run Code Online (Sandbox Code Playgroud)
那你有Job.all_digits.
请注意,在第二个示例中,您正在组装数据库的查询,因此regex_str需要是一个MySQL正则表达式字符串而不是Ruby Regex对象,它具有略微不同的语法.
| 归档时间: |
|
| 查看次数: |
8168 次 |
| 最近记录: |