【问题标题】:Case insensitive search with CanCanCan?使用 CanCanCan 进行不区分大小写的搜索?
【发布时间】:2019-05-15 20:10:39
【问题描述】:

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

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

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

在使用 CanCanCan 的查询时,是否有一种方法可以使自动填充 @promotion 的查找不区分大小写?

或者这是需要在数据库级别完成的事情?

【问题讨论】:

    标签: postgresql ruby-on-rails-5 cancancan


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想我可能不得不做这样的事情:/希望在 CanCanCan 中能做到 @promotion = Promotion.where('lower(code) = ?', params[:code].downcase).first 在幕后。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2010-09-12
    • 2021-06-14
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多