0

我想按年齡過濾結果,堆棧上的某個人足以建議一種方法來做到這一點。在我的索引行動,我有:Rails:問題與過濾結果

@users = User.all 
@users = User.where("birthday >= ? AND birthday <= ?", params[:min_age].to_i.years.ago + 1.day, params[:max_age].to_i.years.ago) 

我想是在默認情況下顯示所有用戶,然後給CURRENT_USER一個選項,按年齡進行篩選。但是通過上面的代碼,它也可以選擇第二行並自動過濾結果。結果是它過濾了今天或昨天生日的用戶,因爲沒有傳入參數,默認情況下不顯示任何用戶。我想要一些功能,它不會運行上面的第二行代碼,如果沒有傳遞參數或者如果這是不可能的,我可以有默認參數,如果沒有參數傳入。

回答

1

你可以嘗試:

@users = User.all 
@users = @users.where("birthday >= ?", params[:min_age].to_i.years.ago + 1.day) if params[:min_age] 
@users = @users.where("birthday <= ?", params[:max_age].to_i.years.ago) if params[:max_age] 

或許:

if params[:min_age] && params[:max_age] 
    @users = User.where("birthday >= ? AND birthday <= ?", params[:min_age].to_i.years.ago + 1.day, params[:max_age].to_i.years.ago) 
else 
    @users = User.all 
end 
+0

兩個工作。我想我會去第二個 – pratski 2013-04-07 05:05:12

+0

當然,如果你允許用戶只選擇'min_age',或者只是'max_age',或者兩者都選擇,第一個更好。 – 2013-04-07 05:06:37