2015-03-30 68 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

相關問題