Tìm các bản ghi có tiêu đề bắt đầu bằng 1 kí tự cho trước
Khi vào 1 trang web, như thư viện sách/bài hát chẳng hạn, chúng ta thường thấy lựa chọn liệt kê các cuốn ách/bài hát theo chữ cái đầu tiên trong tiêu đề Việc này là dễ dàng với tiếng Anh khi chỉ có đúng 26 kí tự, nhưng với tiếng Việt thông thường chúng ta sẽ muốn khi nhấn vào kí tự A, sẽ liệt ...
Khi vào 1 trang web, như thư viện sách/bài hát chẳng hạn, chúng ta thường thấy lựa chọn liệt kê các cuốn ách/bài hát theo chữ cái đầu tiên trong tiêu đề
Việc này là dễ dàng với tiếng Anh khi chỉ có đúng 26 kí tự, nhưng với tiếng Việt thông thường chúng ta sẽ muốn khi nhấn vào kí tự A, sẽ liệt kê ra các cuốn sách/bài hát có tiêu đề bắt đầu với Ă hoặc Â, hơn nữa còn có các kí tự với dấu ví dụ như Ánh sáng bắt đầu là kí tự Á. Dưới đây là một QueryObject đơn giản áp dụng cho việc này. Database engine được sử dụn ở đây là Postgres.
class BookByFirstLetterInTitle class << self def call letter pattern = guess_pattern letter pattern ? Book.where("title ~* ?", pattern) : [] end private def guess_pattern letter case letter.to_s.downcase when "#" "^[0-9]" when "a" "^[aàáảãạăằắẳẵặâầấẩẫậ]" when "e" "^eèéẻẽẹêềếểễệ" when "o" "^[oòóỏõọôồốổỗộơờớởỡợ]" when "u" "^[uùúủũụưừứửữự]" when "d" "^[dđ]" when /(b|c|f|g|h|i|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z)/ "^#{letter}" else nil end end end end