Một cách là
Job.all.select{|j| j =~ /^\d+$/}
nhưng nó sẽ không hiệu quả bằng phiên bản MySQL.
Một khả năng khác là sử dụng phạm vi được đặt tên để ẩn SQL xấu:
named_scope :all_digits, lambda { |regex_str|
{ :condition => [" invoice_number REGEXP '?' " , regex_str] }
}
Sau đó, bạn có Job.all_digits
.
Lưu ý rằng trong ví dụ thứ hai, bạn đang tập hợp một truy vấn cho cơ sở dữ liệu, vì vậy regex_str
cần phải là một chuỗi regex MySQL thay vì một đối tượng Ruby Regex, có cú pháp hơi khác.