首页 > 解决方案 > 创建一个同时应用所有过滤器的 API

问题描述

我必须在 Rails 中创建一个 API,用特定的过滤器查询数据库。问题是大约有 9-10 列,我无法查询每个组合。我对此很陌生,在 python/django 中,我曾经通过创建 adict = {"param": "query_condition"}并将其传递为 objects = SomeModel.objects.filter(**dict). 当我不知道我会从前端收到多少参数时,我怎么能在我的 rails api 中解决这个问题。目前我的控制器看起来像这样 class CharactersController < ApplicationController

def index
    @status  = 200
    @message = ""
    @page    = (params[:page].blank? ? 1 : params[:page].to_i)
    @results = Building.all
    @total   = Building.count
end

def get_residents_with_characters(params)

    @item = Resident.where()`

基本上是一些类似于 python 的语法,用于在get_residents_with_characters.

标签: ruby-on-railsruby

解决方案


有很多方法可以实现您想要的;我通常会通过过滤器减少模型:

params = {"foo" => "bar", "baz" => "boo"}
query =
  params.reduce(Resident) do |q, (k, v)|
    q.where(k.to_sym => v)
  end

可能需要预先进行一些消毒等。


推荐阅读