2010-08-31 3 views
0

У меня есть функция поиска, которая выполняет базовую фильтрацию в приложении Rails 3 (используя новую цепочку методов). Фильтрация использует необязательные параметры и выглядит примерно так:Rails 3 Active Record Initialize Search Chaining

class User < ActiveRecord::Base 

    def self.search(params = {}) 
    users = User.? 

    users = users.where(:sin => params[:sin]) if params[:sin] 
    ... 
    users = users.where("name LIKE :q", :q => "%params[:q]%") if params[:q] 
    end 

end 

Я не уверен, как настроить пользователей по умолчанию для включения всех пользователей. Я бы хотел, чтобы функция поиска возвращала все записи, если не заданы никакие параметры, а в противном случае - фильтр. Есть идеи? Благодаря!

ответ

1
class User < ActiveRecord::Base 

    def self.search(params = {}) 
    users = User.scoped 

    users = users.where(:sin => params[:sin]) if params[:sin] 
    ... 
    users = users.where("name LIKE :q", :q => "%params[:q]%") if params[:q] 
    end 

end 
+0

Thanks Simone! Именно то, что я искал! –

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