ruby-on-rails - 创建一个同时应用所有过滤器的 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
.
解决方案
有很多方法可以实现您想要的;我通常会通过过滤器减少模型:
params = {"foo" => "bar", "baz" => "boo"}
query =
params.reduce(Resident) do |q, (k, v)|
q.where(k.to_sym => v)
end
可能需要预先进行一些消毒等。