У меня есть простая страница списка с парой статусов поисковых фильтров, которая представляет собой простое перечисление и тестовый запрос, который я хочу сравнить с полем заголовка и описания моей модели.
В моем контроллере я хочу сделать что-то вроде этого:
def index
conditions = {}
conditions[:status] = params[:status] if params[:status] and !params[:status].empty?
conditions[???] = ["(descr = ? or title = ?)", params[:q], params[:q]] if params[:q] and !params[:q].empty?
@items = Item.find(:all, :conditions => conditions)
end
К сожалению, не похоже, что я могу смешать два типа условий (хэш и парализованная версия). Есть ли «Rails Way» для этого или мне просто нужно сделать что-то ужасное, как это:
has_status = params[:status] and !params[:status].empty?
has_text = params[:q] and !params[:q].empty?
if has_status and !has_text
# build paramatized condition with just the status
elsif has_text and !has_status
# build paramatized condition with just the text query
elsif has_text and has_status
# build paramatized condition with both
else
# build paramatized condition with neither
end
Я мигрирую из Hibernate и Criteria, так что прости меня, если я не думаю об этом правильно ...
Среда: Rails 2.3.4