2013-06-21 52 views
0

我嘗試使用thinking_sphinx gem在我的mysql數據庫中進行搜索。但我有一些麻煩:Rails sphinx搜索未定義的方法`stringify_keys!'

我得到的錯誤:

1.9.3-p429 :002 > Article.search "diesel" 

**NoMethodError: undefined method `stringify_keys!' for "diesel":String** 

    from /home/pavel/.rvm/gems/ruby-1.9.3-p429/gems/meta_search-1.1.3/lib/meta_search/builder.rb:86:in `build' 
    from /home/pavel/.rvm/gems/ruby-1.9.3-p429/gems/meta_search-1.1.3/lib/meta_search/searches/active_record.rb:43:in `metasearch' 
    from (irb):2 
    from /home/pavel/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.8/lib/rails/commands/console.rb:47:in `start' 
    from /home/pavel/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.8/lib/rails/commands/console.rb:8:in `start' 
    from /home/pavel/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.8/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

我在做什麼錯?

app/indices/article_index.rb

ThinkingSphinx::Index.define :article, :with => :active_record do 
    indexes :ART_ARTICLE_NR 
end 

(另外,我有非標準分貝,場大寫)

的Gemfile:

gem 'thinking-sphinx' 
gem 'mysql2' 

爲什麼會出現這個錯誤?

而且當我嘗試:

1.9.3-p429 :003 > Article.search(ART_ARTICLE_NR: "diesel") 

我得到:

Killed 

我有獅身人面像2.0.4。

+0

您是否也使用MetaSearch gem? –

+0

@IlyaKhokhryakov不,只是在gemfile中 – brabertaser19

回答

3

如果你看看堆棧跟蹤,你會發現實際上MetaSearch給出了一個錯誤,而不是ThinkingSphinx。問題是這兩個寶石添加search方法到ActiveRecord::Base,你會得到一個名稱衝突。其實你調用屬於MetaSearch的search方法,並且需要完全不同的參數。爲了擺脫名稱衝突,在Gemfile中添加thinking-sphinx以下的meta_search。在此之後,您將可以使用Article.search運行ThinkingSphinx搜索並使用Article.metasearch運行MetaSearch,而不會出現錯誤。

1

問題是您還使用meta_search寶石。看起來它也在您的模型中添加了search方法,這是重新定義的同名方法thinking_sphinx

例如,解決方案不使用meta_search

相關問題