我想根据以下内容从users表中选择用户:
user.created
user.sales_count
所以我想获取所有用户,有时按创建日期排序,有时基于sales_count。我希望能够在ASC或DESC订单之间切换。
所有查询都需要具有此WHERE子句:
WHERE region = 123
如何构建我的活动记录查询以按条件支持这些订单?
答案 0 :(得分:1)
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