我有一个Rails应用,其中包含两个模型,Post
和User
,我正在使用Sphinx
和thinking-sphinx
gem来启用搜索。每个帖子都属于一个用户belongs_to
,每个用户都可以有很多帖子。当我搜索帖子时,我也希望能够通过创建帖子的用户名进行搜索。我的帖子索引如下:
ThinkingSphinx::Index.define :post, :with => :active_record do
indexes name, :sortable => true
indexes post_description
indexes user.name, as: :post_user
has user_id, team_id, created_at, updated_at
end
我的用户索引如下所示:
ThinkingSphinx::Index.define :user, :with => :active_record do
indexes name, :sortable => true
indexes email
indexes about
has team_id, created_at, updated_at
end
当我运行:rake ts:index
时,出现以下错误:
rake aborted!
NoMethodError: undefined method `_reflect_on_association' for #<Class:0x007fd417610c90>
关于如何解决它的任何想法?
更新
我很确定当我没有出现任何错误时,这条线会导致他indexes user.name, as: :post_user
。但该协会仍然无法运作..
答案 0 :(得分:5)
这是由于joiner
gem(版本0.3.2
)中的更新,需要Rails >= 4.1.2
。
请参阅此提交:https://github.com/pat/joiner/commit/de1403ec85d21dabf21a715ae962ee31c6ffe8d1
更新到Rails 4.1.2或将以下内容添加到Gemfile
:
gem 'joiner', '0.3.1'