2015-05-18 6 views
1

Как выполнить поисковый запрос в рельсах. Мой params являетсярельсы условие запрос для формы поиска

"search"=>{"id"=>"1", "name"=>"selva", "item_id"=>""} 

и то, что я пытался

User.where("id = ? AND name = ? AND item_id = ?", params["search"]["id"],params["search"]["name"],params["search"]["item_id"]) 

Здесь проблема в том, когда params приходит пустой, то это корыто ошибка. Итак, можете ли вы предложить мне, что лучше всего искать и как люди ищут форму.

ответ

3

Как-то, что

users = User 

if params['search'] 
    search_data = params['search'] 
    users = users.where(:id => search_data['id']) if search_data['id'] 
    users = users.where(:name => search_data['name']) if search_data['name'] 
    users = users.where(:item_id => search_data['item_id']) if search_data['item_id'] 
end 

users = users.all 
+0

не Если первая строка будет 'пользователи = User.all'? Тогда вы можете удалить последнюю строку. –

+1

User.all выполнит запрос. Сохраняя это для последнего, мы обязательно поговорим только с db. –

Смежные вопросы