class User < ActiveRecord::Base
has_many :followings, :as => :followable, :dependent => :destroy, :class_name => 'Follow'
has_many :follows, :as => :follower, :dependent => :destroy
define_index do
has follows.followable(:id), :as => :followable_id
has followings.follower(:id), :as => :follower_id
has follows.followable(:type), :as => :followable_type
has followings.follower(:type), :as => :follower_type
end
end
问题:我无法按类型搜索(总是空数组)。一个bug?我想让所有关注者都是“AAA”类型的用户。
User.search'',:with =&gt; {:follower_type =&gt; 'AAA'}
问题:为什么我必须反转我的关联以获得正确的结果(索引定义): follow.followable(:id),:as =&gt; :followable_id 代替 followings.followable(:id),:as =&gt; :followable_id 我想获得id = 1
的用户的关注者列表User.search:with =&gt; {:followable_id =&gt; 1} #id = 1
THX!
答案 0 :(得分:2)
关于第一个问题 - 字符串过滤器在Sphinx中不起作用。这应该会在未来改变(使用Sphinx 1.10-beta,一旦思考Sphinx支持新功能),但不确定何时会发生(我很快就会说,但不能承诺任何事情)。
虽然有a workaround可用,但请记住,您正在处理字符串数组,因此这是一个额外的复杂程度。
关于第二个问题,努力让我了解数据库看起来像什么(令人困惑的名字,但我现在缺乏关注),所以我暂时将其留在此处。