0

我正在使用 JSONAPI::Resources 开发 Rails REST API。某些资源默认只能发送当年创建的记录,但客户端应用程序也应该可以覆盖此行为以获取较旧的记录。

我已经尝试通过在资源上创建此自定义过滤器来实现此目的:

filter :current_year,
  apply: ->(records, value, _options) {
    if value[0] == 'true'
      records.where("date_part('year', created_at) = date_part('year', CURRENT_DATE)")
    else 
      records
    end
  }

但是使用这个自定义过滤器,客户端应用程序必须始终filter[current_year]=true在每个请求上发送查询字符串,我不希望这种情况发生。

简而言之,API 应该始终按当年过滤记录,并且客户端应用程序应该能够发送过滤器以获取较旧的记录。

我怎样才能做到这一点?

4

1 回答 1

0

我对 JSONAPI::Resources 不是很熟悉,但是您是否尝试添加default选项?

filter :current_year,
  default: 'true',
  apply: ->(records, value, _options) {
    if value[0] == 'true'
      records.where("date_part('year', created_at) = date_part('year', CURRENT_DATE)")
    else 
      records
    end
  }
于 2019-11-25T07:51:18.090 回答