Searchlogic 'ИЛИ' условия для связанных записей - PullRequest
2 голосов
/ 14 февраля 2011

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 принять "ИЛИ «условие для поиска между моделями Virus и Bacterium, по этим линиям;

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 голосов
/ 15 февраля 2011

Я могу ошибаться, но я не думаю, что это работает, за исключением случаев, когда используются столбцы из той же модели и тестируются на одно условие.См. Обсуждение на странице Github .

Ваша лучшая ставка для ИМО - написать собственную область.

...