我有一些过滤器参数被发送到我的控制器:
params[:filter] = ["liked", "day"]
或
params[:filter] = ["top", "month"]
我是怎么做这样的事情的?
filter = params[:filter]
Post.all.where('created_at > ?', 1.filter[1].ago)
这样我就可以编写一个将处理1.day.ago,1.month.ago等的查询。
而不是得到:
NoMethodError: undefined method `filter' for 1:Fixnum
答案 0 :(得分:2)
您必须使用send
按名称调用方法:
Post.all.where('created_at > ?', 1.send(filter[1]).ago)