2

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の間の検索に対して「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」句はそれぞれに複数の名前を許可します)。

何か案は?

4

1 に答える 1

0

私は間違っている可能性がありますが、同じモデルの列を使用して単一の条件に対してテストする場合を除いて、これは機能しないと思います。議論については、 Github の問題ページを参照してください。

あなたの最善の策は、独自のスコープを作成することです。

于 2011-02-15T00:16:41.047 に答える