Rails控制器操作中的菊花链条件。

时间:2012-07-11 18:57:11

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我的控制器的索引方法如下:

  def index
    if params["feed_source_id"]
      @feeds = Feed.find_all_by_feed_source_id(params["feed_source_id"])
    else
      @feeds = Feed.all
  end           

我刚刚将Metasearch Gem添加到我的应用程序中,它将我的索引中的搜索定义为:

@search = Feed.search(params[:search])

如何以菊花链方式连接这两个条件,以便@search执行搜索并包含find_all_by_feed_source_id条件?

2 个答案:

答案 0 :(得分:0)

不确定你的目标是什么 - 除了在索引动作中进行两次搜索外?你想要两个搜索结果的联合或交集吗?

如果你想要一个联盟,你可以做类似的事情 @feeds = @feeds | @ search.all 除了上面的所有代码,这将给你一个糟糕的表现。

我简要介绍了Metasearch Gem,它应该可以将feed_source_id作为参数之一包含在内。

答案 1 :(得分:0)

你想要这些条件的AND,对吧?

我认为这应该有效:

Feed.search({ :feed_source_id_eq => params[:feed_source_id] }.merge(params[:search]))