如何使ActsAsTaggableOn :: Tag成为'acts_as_indexed'?

时间:2012-05-11 16:01:02

标签: ruby-on-rails-3 full-text-search acts-as-taggable-on

我有一个rails 3应用程序,我使用acts_as_taggable_on来标记Post模型。我有一个搜索框,允许我搜索帖子,我在其中使用acts_as_indexed。在我的搜索中,我希望能够通过扩展ActsAsTaggableOn :: Tag类来搜索所有标记,以支持acts_as_indexed。我怎么做?

我尝试了以下内容:

# lib/tag.rb
module ActsAsTaggableOn
 class Tag
   acts_as_indexed :fields => [:name]
 end
end

但是当我尝试调用find_with_index时出现以下错误:

> ActsAsTaggableOn::Tag.find_with_index('foo')
undefined method `find_with_index' for ActsAsTaggableOn::Tag(id: integer, name: string):Class

更新:我使用acts_as_taggable_on的内置查找器(特别是Tag#named_like)来完成这项工作,但我更喜欢使用acts_as_indexed,因为我在我的应用程序中使用了所有其他模型,而且我需要特殊情况标签搜索由于这个问题。

谢谢,

1 个答案:

答案 0 :(得分:1)

在Post模型上扩展act_as_indexed声明可能更容易,这样每个帖子相关的标签都会包含在搜索中。

class Post
  acts_as_taggable_on
  acts_as_indexed :fields => [ <existing tag list> , :tag_list]