Searchlogic对相关记录的“OR”条件

时间:2011-02-14 17:01:55

标签: ruby-on-rails searchlogic

Rails 2.3.5 Searchlogic 2.3.27

我有以下型号;

class Outbreak < ActiveRecord::Base
  has_many :bacterial_agents, :dependent => :destroy
  has_many :bacteria, :through => :bacterial_agents

  has_many :viral_agents, :dependent => :destroy
  has_many :viruses, :through => :viral_agents
end

class BacterialAgent < ActiveRecord::Base
  belongs_to :outbreak
  belongs_to :bacterium
end

class Bacterium < ActiveRecord::Base
  has_many :bacterial_agents
  has_many :outbreaks, :through => :bacterial_agents
end

class ViralAgent < ActiveRecord::Base
  belongs_to :outbreak
  belongs_to :virus
end

class Virus < ActiveRecord::Base
  has_many :viral_agents
  has_many :outbreaks, :through => :viral_agents
end

我正在尝试让Searchlogic接受“病毒”和“细菌”模型之间搜索的“OR”条件,以及这些条款;

params[:search] = {"bacterial_agents_bacterium_name_like_any" => "VTEC O157", "viral_agents_virus_name_like_any" => "NOROVIRUS"}

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

虽然两个范围都在没有“”的情况下工作,但无法识别范围“_or_viral_agents_virus_name_like”。返回的输出应显示所有记录,其中细菌名称类似于“VTEC O157”或病毒名称类似于“NOROVIRUS”(“any”子句允许每个名称使用多个名称。)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我可能是错的,但我认为这不起作用,除非使用相同模型的列并针对单个条件进行测试。请参阅Github issues page进行讨论。

你最好的选择IMO就是自己编写范围。