使用 CanCanCan 进行不区分大小写的搜索?

Case insensitive search with CanCanCan?

我正在尝试使用 CanCanCan 进行不区分大小写的搜索。 我正在使用一个名为代码的自定义变量,如下所示:

class PromotionsController < ApplicationController
  load_and_authorize_resource find_by: :code, id_param: :code

  # GET /api/v1/promotions/:code
  def show; end
end

在仍然使用 CanCanCan 查询的同时,是否可以让自动填充 @promotion 的查找不区分大小写?

或者这是否需要在数据库级别完成?

我会使用 citext,PostgreSQL 中不区分大小写的文本类型。

这存在于一个扩展中,因此您首先要创建它:

CREATE EXTENSION citext;
ALTER TABLE promotions ALTER code TYPE citext;