2015-03-30 104 views

回答

3

而是寻找一个通配符的,我想你应该如下刚分开where电话:

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

这将执行where方法更新@submissions仅在params[:foo]存在时才有关系。

通配符如%可能与sql like运算符一起使用。然而,如果你想要所有的记录,为什么要额外运行呢?

+0

你是怎么说“跑多余的地方”? – 2015-03-30 23:59:02

+1

当你有'where(“foo like'%'”)'时,这将执行where子句。另外,我希望你已经在这个'foo'列中定义了一个索引。 – vee 2015-03-31 00:00:36

+0

你可以链接'where's - 它们不需要评估(即不调用数据库),所以你可以在新行上添加'.where(...)'子句 - 它们对于做有条件的'where'是很有用的。 这里的模式vee是我过去使用过的,是一个很好的模式。 – 2015-03-31 00:02:00

相关问题