【问题标题】:How can I filter created_at by current year with JSONAPI::Resources?如何使用 JSONAPI::Resources 按当年过滤 created_at?
【发布时间】:2019-11-23 20:09:34
【问题描述】:

我正在使用 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 应始终按当年过滤记录,客户端应用程序应能够发送过滤器以获取较旧的记录。

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails jsonapi-resources


    【解决方案1】:

    我对 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
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      相关资源
      最近更新 更多