应用多个过滤器JSON API资源

时间:2017-04-08 12:28:32

标签: ruby-on-rails jsonapi-resources

这是一个我无法弄清楚的简单问题。我想在rails JsonApiResources中应用多个过滤器。这是我的资源代码。

      filters :start_date, :end_date, apply: -> (records, value, _options){
        byebug
        time = ' 00:00:00'
        _options[:context][:current_company].documents.where('updated_at > ? AND updated_at < ?',value[0]+time,value[1]+time)
      }

这是我打电话的网址。

http://localhost:3000/api/v1/dashboard?utf8=%E2%9C%93&filters%5Bstart_date%5D=2017-01-01&filters%5Bend_date%5D=2017-01-01&%5Bwith_tax%5D=0&commit=Search

但它不会调用此代码,而是调用self.records。但是,如果我将代码更改为仅支持一个参数,请在上面的代码和网址中说:start_date并将filters更改为filter,而不是它可以正常工作。

1 个答案:

答案 0 :(得分:0)

我也遇到了过滤器的问题。因此,我使用了两个单独的过滤器来实现它。

  1. 网址应该包含filter关键字而不是过滤器。即

    json_api:get,api_tags_path,filter:{     &#39; start_date&#39;:&#39;开始日期&#39; ,     &#39; end_date&#39;:&#39;结束日期&#39;,   }

    http://www.example.com/api?filter[start_date]=start-date&filter[end_dat]=end-date

  2. 在资源文件中:

    过滤&#34; start_date&#34;,申请: - &gt; (记录,值,_options){      records.where(&#39; updated_at&gt;?&#39;,value [0]) }

    过滤&#34; end_date&#34;,申请: - &gt; (记录,值,_options){       records.where(&#39; updated_at&lt;?&#39;,value [0])  }