根据日期1.day.ago,1.week.ago等动态过滤param的结果

时间:2014-11-17 12:44:26

标签: ruby-on-rails ruby

我有一些过滤器参数被发送到我的控制器:

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

1 个答案:

答案 0 :(得分:2)

您必须使用send按名称调用方法:

Post.all.where('created_at > ?', 1.send(filter[1]).ago)