如果发送了params[:foo]
,则过滤:
@submissions = Submission.where(foo: params[:foo] )
.order("#{params[:sort]} #{ params[:direction]}" )
如果没有,那么
@submissions = Submission.order("#{params[:sort]} #{ params[:direction]}" )
这样做的惯用方法是什么?
是否可以使用通配符:params[:foo] || '*'
答案 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
运算符一起使用。但是,如果你想要所有的记录,为什么要运行额外的?