我有3个型号:
统计信息(belongs_to:item)
t.integer :skin_id
t.integer :item_id
t.integer :rating
商品(has_many:stats)
和
皮肤(has_many:stats)
使用 thinking_sphinx 我想为项目创建一个单独的索引,按以下方式排序:特定评级:skin_id
所以,我想:
define_index 'sort_by_rate' do
indexes stats(:rating), :as => :ratings, :sortable => true
end
但是,这将为所有人生成一个索引:skin_id(在Stat模型中),而不是特定的索引。
换句话说,我需要收集所有项目,按Stat.rating排序,使用Stat.skin_id == 1(例如)。
以下是SQL的示例:
"SELECT `stats`.* FROM `stats` INNER JOIN `items` ON `items`.`id` = `stats`.`item_id` WHERE `stats`.`skin_id` = 1 ORDER BY rating DESC"
非常感谢ANy解决方案!
答案 0 :(得分:0)
也许你应该在你的define_index块中:
has :skin_id
然后,在搜索时,按此过滤。像这样:
Item.search(:with => {:skin_id => skin.id}, :order_by => 'ratings ASC')