Skip to content

Commit ad9e292

Browse files
committed
Fix #245
1 parent 20da2ec commit ad9e292

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

lib/ajax-datatables-rails/orm/active_record.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ def filter_records(records)
1515
def sort_records(records)
1616
sort_by = datatable.orders.inject([]) do |queries, order|
1717
column = order.column
18-
queries << order.query(column.sort_query) if column
18+
queries << order.query(column.sort_query) if column && column.orderable?
19+
queries
1920
end
2021
records.order(sort_by.join(', '))
2122
end

spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@
2929
'ORDER BY users.username ASC, users.email DESC'
3030
)
3131
end
32+
33+
it 'should not sort a column which is not orderable' do
34+
datatable.params[:order]['0'] = { column: '0', dir: 'asc' }
35+
datatable.params[:order]['1'] = { column: '4', dir: 'desc' }
36+
expect(datatable.sort_records(records).to_sql).to_not include(
37+
'ORDER BY users.username ASC, users.post_id DESC'
38+
)
39+
end
3240
end
3341

3442
end

spec/support/test_helpers.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def view_columns
6060
email: { source: 'User.email' },
6161
first_name: { source: 'User.first_name' },
6262
last_name: { source: 'User.last_name' },
63-
post_id: { source: 'User.post_id' },
63+
post_id: { source: 'User.post_id', orderable: false },
6464
created_at: { source: 'User.created_at' },
6565
}
6666
end

0 commit comments

Comments
 (0)