データベースを動的にソートしたいと思います。ソートシーケンスはルビーハッシュに保存されます-
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">
つまり、すべての列が「降順」で並べ替えられます(最後の「方向」が指定されます)。
クエリが指定されたハッシュと一致することをどのように確認しますか?また、これをより良い方法で行うことができれば、非常に役立ちます。