cho*_*bin 1 api caching ruby-on-rails
我正在尝试使用Rails构建一个API,它将检查request标头"If-Modified-Since"并仅渲染在该日期之后修改的对象.问题是我试图从控制器中的请求头获取值.
# API
def index
@products = Product.where{updated_at > request.headers["If-Modified-Since"]}
render "v1/products/index"
end
Run Code Online (Sandbox Code Playgroud)
从请求标头中提取值的正确方法是什么?
第一:If-Modified-Since用于HTTP缓存验证.请不要这样使用它.请改用参数.
回答你的问题:request.headers[]是访问请求标头的正确方法.作为参考,request是一个ActionDispatch :: Request对象.
这里的问题是你如何表达约束.你传递一个块进入ActiveRecord的#where方法,该块不作任何意义(Symbol#>(String)?).您可以将其表示为SQL片段,如:
Product.where("updated_at > ?", params[:last_update])
Run Code Online (Sandbox Code Playgroud)
或者,您可以放入Squeel,并写道:
Product.where{ updated_at > params[:last_update] }
Run Code Online (Sandbox Code Playgroud)