我们想要动态地对数据库进行排序。排序序列存储在 ruby 哈希中 -
sortorder = [
{
'property' => 'company',
'direction' => 'asc'
},
{
'property' => 'name',
'direction' => 'asc'
},
{
'property' => 'id',
'direction' => 'desc'
}
]
我们正在尝试构建这样的查询 -
query = DB[:contacts]
sortorder.each do |s|
column = s['property']
direction = s['direction'].downcase
if direction == 'asc'
query = query.order_append(column.to_sym)
else
query = query.order_append(column.to_sym).reverse
end
end
但是,查询看起来像这样
#<Sequel::SQLite::Dataset: "SELECT * FROM `contacts` ORDER BY `company` DESC, `name` DESC, `id` DESC">
也就是说,所有列都按“降序”排序(给出的最后一个“方向”)
我们如何确保查询与给定的哈希匹配?此外,如果这可以以更好的方式完成,那将非常非常有帮助。