我有多个控制器。我有一种像这样过滤的方法。
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
我想编写一个通用方法,可以在我希望特定模型中的所有可用属性作为过滤参数的情况下使用。有没有比写所有属性更好的方法?