【问题标题】:Rails: specify query scope via variable?Rails:通过变量指定查询范围?
【发布时间】:2013-09-22 08:20:35
【问题描述】:

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

当然不是这样的。

【问题讨论】:

    标签: ruby-on-rails metaprogramming


    【解决方案1】:

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

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

    所以你不需要添加范围。如果你仍然坚持范围,你可以看看concerns

    【讨论】:

      猜你喜欢
      • 2013-12-24
      • 1970-01-01
      • 2011-11-08
      • 2011-03-03
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多