Можно ли оптимизировать (упростить) набор условий для фильтрации?

В контроллере имеется метод Index, который. в зависимости от того была ли отправлена форма на фильтрацию - выводит записи.
То есть на странице со списком пользователей имеется форма, которая отправляет запрос в текущий контроллер методом GET. И если параметры для фильтрации небыли переданы, то выводятся все записи. Если были переданы - то какие именно и по ним фильтрует записи и выводит уже отфильтрованные.

Есть ли возможность условия в методе filter упростить. с учетом того, что будет до 11 параметров фильтрации?

def index

    @filteruser     = User.new
    cnf                  = nil
    user                = params[:user]

    def filter(user)
      @username     = user[:name]
      @userlastname = user[:lastname]
      # Еще 9 параментров
      @username&&@userlastname          ? cnt = User.where(:name      => @username, :lastname => @userlastname) : false
      @username&&@userlastname.blank?   ? cnt = User.where(:name      => @username)                             : false
      @username.blank? && @userlastname ? cnt = User.where(:lastname  => @userlastname)                         : false
      # Еще дохрена условий??
      @users        = cnt
    end

    user ? filter(user) : @users = User.all

    @user_cnt       = @users.count

  end


Буду очень признателен за совет по упрощению выборки либо же направление куда гуглить, заранее благодарен
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
ammet
@ammet
Ruby on Rails developer
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы