在Rails中有没有惯用的方法(params [:foo] ||'*')?

时间:2015-03-30 23:43:38

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

如果发送了params[:foo],则过滤:

@submissions = Submission.where(foo: params[:foo] )
                         .order("#{params[:sort]} #{ params[:direction]}" )

如果没有,那么

 @submissions = Submission.order("#{params[:sort]} #{ params[:direction]}" )

这样做的惯用方法是什么?

是否可以使用通配符:params[:foo] || '*'

1 个答案:

答案 0 :(得分:3)

我认为您应该将where调用分开如下:

而不是搜索通配符。
@submissions = Submission.order("#{params[:sort]} #{ params[:direction]}")
@submissions = @submissions.where(foo: params[:foo]) if params[:foo]

仅当where存在时,才会执行@submissions方法更新params[:foo]关系。

%之类的通配符可以与sql like运算符一起使用。但是,如果你想要所有的记录,为什么要运行额外的?