Searchlogic 'OR' conditions on associated records

259 views Asked by At

Rails 2.3.5 Searchlogic 2.3.27

I have the following models;

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

I'm currently trying to get Searchlogic to accept an "OR" condition for a search between the models Virus and Bacterium, along these lines;

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

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

The scope "_or_viral_agents_virus_name_like" isn't recognised although both scopes work without the "or". The returned output should show all records where the bacteria name is like "VTEC O157" or the virus name is like "NOROVIRUS" (the "any" clause is to allow multiple names for each).

Any ideas?

1

There are 1 answers

0
zetetic On BEST ANSWER

I could be wrong, but I don't think this works except when using columns from the same model and testing against a single condition. See the Github issues page for a discussion.

Your best bet IMO is to write your own scope.