Rails Найти, когда некоторые параметры будут пустыми - PullRequest
2 голосов
/ 20 ноября 2010

У меня есть форма поиска с двумя полями: x, y

Когда поиск будет выполнен, он будет искать записи, которые соответствуют всем условиям. Однако любое из двух условий можно установить на «Все», оставив его пустым.

На что следует установить params [: x] и params [: y], если они установлены на все.

params[:x] = ? unless params[:x]
params[:y] = ? unless params[:y]

users = User.where(["x = ? AND y = ?", params[:x], params[:y]])

Ответы [ 2 ]

4 голосов
/ 20 ноября 2010

Я бы предложил создать ваши условия, используя хэш

conditions = {}
conditions[:x] = params[:x] unless params[:x].blank?
conditions[:y] = params[:y] unless params[:y].blank?

users = User.find(:all, :conditions => conditions)
4 голосов
/ 20 ноября 2010

Вы должны объединить свои условия вместо того, чтобы пытаться создать область, которая настолько специфична. Вы можете использовать технику скользящего прицела:

scope = User

if (params[:x].present?)
  scope = scope.where(:x => params[:x])
end

if (params[:y].present?)
  scope = scope.where(:y => params[:y])
end

users = scope.all

Таким образом, вы можете условно задействовать ограничения на основе параметров, которые могут присутствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...