Солнечное пятно - поиск нескольких моделей с использованием условного вызова с вызовом

class Cat < ActiveRecord::Base
  searchable do
    string :color
  end
end
class Dog < ActiveRecord::Base
  searchable do
    string :color
  end
end

Учитывая модели Cat и Dog выше, как мне выполнить поиск солнечных пятен для всех собак + только кошек коричневого цвета.

|dogs|color|    |cats|color|
------------    ------------
| 1  |black|    | 1  |black|
| 2  |brown|    | 2  |brown|
| 3  | red |    | 3  | red |

С вышеуказанными собаками/кошками я хочу Dogs [1, 2 3] и Cat [2].

Я хочу что-то вроде ниже, но при условии, что with применяется только к Cats.

Sunspot.search(Dog, Cat) do
  with :color, "brown"
end

Есть ли параметр with, который является типом модели? Если да, то я мог бы сделать что-то вроде этого:

Sunspot.search(Dog, Cat) do
  any_of do
    with :color, "brown"
    with :model, Dog
  end
end

Как вы оцениваете фрагменты Sunspot DSL вокруг искомой модели?


person Andrew Hubbs    schedule 15.10.2013    source источник


Ответы (1)


В итоге я добавил поле table_name в индекс модели и использовал его.

class Dog < ActiveRecord::Base
  searchable do
    string :color
    string :table_name do Dog.table_name end
  end
end

Sunspot.search(Dog, Cat) do
  any_of do
    with :color, "brown"
    with :table_name, Dog.table_name
  end
end
person Andrew Hubbs    schedule 16.10.2013
comment
Если есть лучший ответ, я открыт для этого. - person Andrew Hubbs; 16.10.2013