2010-11-30 2 views
1

Я в процессе обновления моего приложения от Rails2 до Rails3.
В моем приложении Rails2 используется поисковая система.
После googling я узнал, что searchlogic не совместим с Rails3, и вместо этого нужно использовать meta_search.rails 3 meta_search использование

Но я не знал, как использовать meta_search vis-a-vis searchlogic.

Если у меня есть модель пользователя с полями name и: address, я не могу использовать следующие методы с meta_search. Что я делаю не так?

ruby-1.9.2-p0 > User.name_null 
NoMethodError: undefined method `name_null' for #<Class:0x000000038d5ce0> 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/base.rb:1008:in `method_missing' 
from (irb):7 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands.rb:23:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Ни один из методов, таких как User.user_id_eq (1) или User.name_equals ("Blah") не работают. Я предполагаю, что я еще не понял использование meta_search!

Ref:
meta_search https://github.com/ernie/meta_search

ответ

1

методы являются атрибуты, которые будут установлены в FormBuilder. Таким образом, вы хотите вызвать user_name_equals = «Bob», а не user_name_equals («Bob»). Кроме того, они будут находиться в экземпляре поиска, а не в самой модели.

@search = User.search (: user_name_eq => "Боб")

Если вы ищете что-то, чтобы использовать в повседневной конструкции запроса, попробуйте MetaWhere вместо этого. http://metautonomo.us/projects/metawhere

+0

Спасибо Эрни за ответ и хороший плагин для поиска в Rails3. Но с meta_where также я не получаю синтаксис searchlogicy. Я думаю, будет хорошо иметь какие-то методы обертки над meta_where, которые демонстрируют синтаксис поисковой системы, чтобы обеспечить плавный переход от Rails2 к Rails3. – 2010-11-30 19:19:40

1

Следите за rd_searchlogic, который выглядит совместимым с Rails 3, хотя и является предварительным просмотром на момент написания этой статьи.

EDIT

Как описано в this SO thread, установить с помощью:

gem 'rd_searchlogic', :require => 'searchlogic', :git => 'git://github.com/railsdog/searchlogic.git' 
+0

Я тоже пытался rd_searchlogic, у него такая же проблема `method_missing '. – 2010-12-01 01:34:35