Ruby on rails 如何使用Searchkick实现这一点?

Ruby on rails 如何使用Searchkick实现这一点?,ruby-on-rails,searchkick,Ruby On Rails,Searchkick,我的Rails应用程序中有一个模型过滤系统。目前它只是根据参数进行过滤。我想尝试重做它,但使用Searchkick 我被困的地方是我的号码和字母过滤。目前,这是通过以下方式实现的: if params[:letter] letter = params[:letter] if letter == "numbers" conditions = (0..9).to_a.map{ |number| " car_sort = '#{n

我的Rails应用程序中有一个模型过滤系统。目前它只是根据参数进行过滤。我想尝试重做它,但使用Searchkick

我被困的地方是我的号码和字母过滤。目前,这是通过以下方式实现的:

    if params[:letter]
    letter = params[:letter]

    if letter == "numbers"
        conditions = (0..9).to_a.map{ |number| " car_sort = '#{number}' " }.join('OR')
    else
        # If single letter
        if params[:letter] =~ /^[a-zA-Z]$/
        letter = params[:letter]
        conditions = " car_sort = '#{letter}' "

        # If range of letters
        else
        letter = letter.split('-')
        letter = (letter[0]..letter[1]).to_a
        conditions = letter.map{ |letter| " car_sort = '#{letter}' " }.join('OR')
        end
    end
    @cars = @cars.where(conditions)
我希望将其转换为Searchkick,但我一直在思考如何管理它。这就是我到目前为止所做的:

    where = {}

    where[:material] =  params[:material] if params[:material]


    if params[:letter]
        letter = params[:letter]

        if letter == "numbers"
            where[:_or] = [{ name: { prefix: 0 } }, { name: { prefix: 1 } }, { name: { prefix: 2 } }, { name: { prefix: 3 } }, { name: { prefix: 4 } }, { name: { prefix: 5 } }, { name: { prefix: 6 } }, { name: { prefix: 7 } }, { name: { prefix: 8 } }, { name: { prefix: 9 } }]
        end
    end
    
    order = {order_ridden: :desc} # Defsult ordering by the "order_ridden" attribute of Car

    if params[:sort] == 'order'
        @cars = Car.originals.search params[:q].presence || "*", where: where, order: order, load: true
    else
        @cars = Car.latest.search params[:q].presence || "*", where: where, order: order, load: true
    end
有什么想法吗

尼尔