如何使搜索框在Rails中不区分大小写?

问题描述

我在Rails中有一个简单的搜索表单,但是当我使用搜索框时,我需要准确输入名称。 例如,当我尝试搜索“更多” 时,它不会返回任何内容,但是当我使用“更多” 进行搜索时,它将返回记录,因此看起来它的行为是区分大小写的。

是否可以采用这种区分大小写的方式?

这是我的代码

def self.search(search)
    if search
        star = Star.find_by(who: search)
        if star
            self.where(star_id: star)
        else
            Post.all
        end
    else
        Post.all
    end
end

解决方法

您可以执行以下操作:

star = Star.where("UPPER(who) = ?",search.upcase).take

star = Star.where("LOWER(who) = ?",search.downcase).take

无论哪种方式,在比较它们之前,这都会强迫您搜索词以及数据库中的who值,这应该会为您提供所需的结果