【问题标题】:How to combine two activerecord queries?如何组合两个 activerecord 查询?
【发布时间】:2016-03-31 13:05:46
【问题描述】:

假设我们有Event 模型和SearchEngine 对事件执行搜索的类。

SearchEnginesearch 方法。

class SearchEngine
  def search(event_scope)
    return Event.all if event_scope.nil?
    //event_scope combined with Event.where('name = ?','test')
  end
end

我希望能够像这样传递 event_scope:

SearchEngine.new.search(Event.where('start_time > ?',Time.now))

结果将与以下内容相同:

Event.where('start_time > ?',Time.now).where('name = ?','test')

我该怎么做?

【问题讨论】:

  • 为什么不将该查询放在搜索中?为什么要打扰范围呢?

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord


【解决方案1】:

范围提供merge method 以与另一个范围合并,因此应该可以:

class SearchEngine
  def search(event_scope)
    return Event.all if event_scope.nil?
    Event.where('name = ?','test').merge(event_scope)
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2019-02-16
    • 2020-07-08
    • 2014-07-16
    • 1970-01-01
    相关资源
    最近更新 更多