2013-10-15 21 views
0
class Cat < ActiveRecord::Base 
    searchable do 
    string :color 
    end 
end 
class Dog < ActiveRecord::Base 
    searchable do 
    string :color 
    end 
end 

鑑於模型CatDog以上,我該怎麼做了所有的狗+僅是棕色貓黑子搜索。黑子 - 搜索使用條件的多個型號,呼叫

|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 

你怎麼範圍周圍的模型太陽黑子DSL件正在搜索做?

回答

0

我結束了添加字段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 
+0

如果有更好的答案,我願意接受。 –