我正在做有三个模型对象,Team
,Users
和Member
一个应用程序,Member
是Team
和Users
之间的连接表。所以每个Team
可以有许多成员,并且每个User
可以是多个团队的成员。的Rails 4.1 - 思维 - 狮身人面像搜索与许多一对多通过关系
的关系是这样的:
# Team.rb
has_many :members
has_many :users, through: :members
# User.rb
has_many :members
has_many :teams, through: :members
我想要做的就是寻找成员是在一个特定的团队。目前我得到no
结果。
我的指标是这样的:
# user_index
ThinkingSphinx::Index.define :user, :with => :real_time do
indexes name
indexes email
indexes about
has team_id, type: :integer
has created_at, type: :timestamp
has updated_at, type: :timestamp
indexes members.team.name, :as => :teams
end
# team_index
ThinkingSphinx::Index.define :team, :with => :real_time do
indexes name
has created_at, type: :timestamp
has updated_at, type: :timestamp
indexes members.user.name, :as => :members
end
# member_index.rb
ThinkingSphinx::Index.define :member, :with => :real_time do
has user_id, type: :integer
has team_id, type: :integer
has created_at, type: :timestamp
has updated_at, type: :timestamp
end
我members_controller
索引操作(其中我执行搜索) - 看起来是这样的:
def index
@team = Team.find_by_id(params[:team_id])
@users = @team.users.search(params[:search], :page => params[:page], :per_page => 10)
end
我已签,球队实际上有用户,但@用户总是返回0.任何想法,我应该怎么做,使其工作,因为我想?
更新
我使用的Rails:4.1.4 和思维,sphink:3.1.1
我的狮身人面像查询看起来是这样的:
Sphinx Query (0.7ms) SELECT * FROM `member_core` WHERE MATCH('Anders') AND `team_id` = 2 AND `sphinx_deleted` = 0 LIMIT 0, 10
狮身人面像搜索到0
随着控制器代码略有更新:
@members = @team.members.search(params[:search], :page => params[:page], :per_page => 10)
你可以看看Rails日志并找出正在创建的相应SphinxQL查询吗? – pat
另请参阅:哪些版本的Rails和Thinking Sphinx正在使用? – pat
@pat我已更新我的问题,并希望能回答你的问题。 – Anders