2013-09-22 18 views
0

有沒有辦法通過變量向ActiveRecord查詢添加範圍?Rails:通過變量指定查詢範圍?

if @date.present? 
    result << Foo.in_region(params[:region_id]).created_since(@date) 
    result << Bar.in_region(params[:region_id]).created_since(@date) 
    result << Baz.in_region(params[:region_id]).created_since(@date) 
else 
    result << Foo.in_region(params[:region_id]) 
    result << Bar.in_region(params[:region_id]) 
    result << Baz.in_region(params[:region_id]) 
end 

我想這樣做財產以後,如:

scope = in_region(params[:region_id]) 
scope << created_since(@date) if @date.present? 
%w(Foo Bar Baz).each do |model| 
    result << model.scope 
end 

當然它不是以這種方式工作。

回答

0

您需要創建兩個範圍,然後將它們鏈接起來。 但對於這樣簡單的查詢,我沒有看到範圍的原因,它也不過

Foo.where(region_id: params[:region_id]).where('created_at >= ?', @date) 

,這樣你就不需要添加範圍。如果你反正堅持示波器,你可以看看concerns