有没有办法通过变量向ActiveRecord查询添加范围?
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 :(得分:0)
您需要创建两个范围,然后将它们链接起来。 但对于这样简单的查询,我没有看到范围的原因,它只是
Foo.where(region_id: params[:region_id]).where('created_at >= ?', @date)
因此您无需添加范围。如果您仍坚持使用范围,可以查看concerns