0

我有多个控制器。我有一种像这样过滤的方法。

def filter(filtering_params)
        results = where(nil)
        filtering_params.each do |key, value|
          results = results.public_send(key, value) if value.present?
        end
        results
      end

从控制器中,我将使用过滤参数调用索引或显示 API,例如像这样。

def filtering_params
        params.slice(:status, :created_at, :id, :transaction_datetime, :portfolio_external_reference_id, :file_id, :file_name)
      end

我将在像这样从 API 中获取时使用它。

def index
records = Module::Class.filter(filtering_params)
render json: {
        data: records
      }
end

我想编写一个通用方法,可以在我希望特定模型中的所有可用属性作为过滤参数的情况下使用。有没有比写所有属性更好的方法?

4

1 回答 1

0

我解决了它,它对我有用。

def filter_params(params)
        values = params.slice(*column_names.map(&:to_sym))
        filter(values)
end
于 2021-07-28T12:26:30.853 回答