2012-04-16 3 views
0

Я пробовал meta_search, но после добавления «включить MetaSearch :: Searches :: ActiveRecord» в мою модель, он вызвал ошибку как «undefined method` joins_values ​​»при запуске« MyModel.search (params [: search]) »есть ли какой-либо плагин для сложного поиска с помощью mongoid (например, meta_search для ActiveRecord)?

Я думаю, что не нужно полный текст, так что я думаю, что следующие камни не подходят для моего проекта в настоящее время :: mongoid_fulltext Mongoid-сфинкс sunspot_mongoid mongoid_search

Я попробовал старый камень с именем области действия-поиск I может заставить его работать, например:

get :search do 
    @search  = Notification.scoped_search(params[:search] 
    search_scope = @search.scoped 
    defaul_scope = current_user.notifications 
    result_scope = search_scope.merge defaul_scope 
    @notifications = result_scope 

    render 'notifications/search' 
end 

, но это позволит разрешить любые области в моей модели.

Есть ли «лучшая практика» для выполнения этой работы?

+0

Почему вы хотите ограничить использование области действия на вашем поиске? – shingara

ответ

0

Если вы хотите ограничить область вы хотите использовать на своем scoped_search вы можете отфильтровать Params [: поиск], как:

def limit_scope_search 
    params[:search].select{|k,v| [:my_scope, :other_scope_authorized].include?(k) } 
end 
+0

Я действительно пропустил «search_methods» от meta_search gem, он использует для определения белого списка, для которого области могут использоваться в форме поиска. Может быть, неплохо было бы отфильтровать scarchable scopes в контроллере, я думаю, для меня все в порядке. Но точка моего вопроса: «Есть ли какой-либо плагин для сложного поиска с помощью mongoid (например, meta_search для ActiveRecord)?» – RainChen