0

有没有办法通过变量为 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

当然,它不是这样工作的。

4

1 回答 1

0

您需要创建两个范围,然后简单地将它们链接起来。但是对于这样简单的查询,我看不到范围的原因,它只是

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

所以你不需要添加范围。如果您仍然坚持使用范围,您可以查看关注点

于 2013-09-22T10:03:40.050 回答