如何使用 JSONAPI::Resources 按当年过滤 created_at?
How can I filter created_at by current year with JSONAPI::Resources?
我正在使用 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 应始终按当年过滤记录,客户端应用程序应能够发送过滤器以获取较旧的记录。
我该怎么做?
我对 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
}
我正在使用 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 应始终按当年过滤记录,客户端应用程序应能够发送过滤器以获取较旧的记录。
我该怎么做?
我对 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
}