Упорядочение в предложении выбора, для поддержки многих столбцов - PullRequest
1 голос
/ 11 апреля 2011

Я хочу выбрать пользователей из таблицы пользователей на основе:

user.created
user.sales_count

Поэтому я хочу получить всех пользователей, иногда упорядоченных по дате создания, а иногда на основе sales_count. И я хочу иметь возможность переключаться между заказами ASC или DESC.

Все запросы должны иметь это предложение WHERE:

WHERE region = 123

Как создать запрос активной записи для поддержки этого порядка по условиям?

1 Ответ

1 голос
/ 11 апреля 2011
def get_users(options={})
  options[:order_col] ||= "created"
  options[:order_type] ||= ""
  User.where(:region=>123).order("#{options[:order_col]} #{options[:order_type]}")
end

options[:order_col] ||= действительно говорит:

options[:order_col] = options[:order_col] || ""

который на английском языке говорит установить options[:order_col] в options[:order_col], если установлено, в противном случае "". Мы можем установить для order_type значение "", поскольку SQL по умолчанию будет иметь порядок ASC.

Пример:

get_users #=> return ordered by created ASC
get_users(:order_col => "sales_count") #=> return order by sales count ASC
get_users(:order_col => "sales_count", :order_type => "DESC") #=> sales_count, DESC
# etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...