太阳黑子 - 返回仅在一个表中找到而不在另一个表中的行

时间:2013-11-27 12:27:43

标签: ruby-on-rails-3.2 sunspot

我在我的rails应用程序中使用太阳黑子solr。

我有2个表,表A和表B.表A包含也出现在B中的ID。

我只需要在表A中找到的行上显示和执行搜索,而不是在表B中。 可搜索的属性在model.rb中定义如下:

  searchable do

    text  :bk_id
    long  :bk_id

    long :tableb_bk_id do
      tableb.nil?? '' : (tableb.bk_id.nil? ? '' : tableb.bk_id)
    end
  end

如何过滤结果,以便所有搜索和默认搜索返回的行仅包含在表A中找到的ID,而在B中找不到。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

以下是解决上述问题的步骤。

步骤1:查找表A中需要排除的所有行

第2步:做类似于以下代码的事情

  post = Post.find(params[:id])
Sunspot.search(Post) do
  without(post)
end

without子句将排除您不希望在结果集中显示的行。

希望这对某人有帮助