首页 > 解决方案 > 如何在 Rails 6 的 ActiveRecord 中使用西里尔字母进行不区分大小写的搜索?

问题描述

我有一个表格,其中包含按拧紧次数的用户。我试图只获得高于或等于管理员输入的一定数量的紧固的用户。然后管理员将选择英文或俄文字母的第一个字母,单击按钮并仅选择名称以该字母开头的用户。但是,当我选择西里尔字母时,小写名称不会出现在结果表中,而当我选择英文字母时,小写名称与大写的结果一起出现。数据库是 SQLite 3(Gem 版本 ~> 1.4)。如何使小写西里尔名称与大写西里尔名称一起出现?

我的数据库.yml:

default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

控制器:

  def standard
    @users = User.where("users.number_of_tightenings >= ?", params[:standard]).where("users.name LIKE ? collate nocase",  "%#{params[:first_letter_of_name]}%")
  end

路线:

  get 'users/top/standard/:standard/:first_letter_of_name', to: 'users#standard'

标签: ruby-on-railssqliteactiverecordruby-on-rails-6

解决方案


推荐阅读