Skip to content

Commit

Permalink
MSSQL support
Browse files Browse the repository at this point in the history
Fix mssql support for paginate_by_sql
  • Loading branch information
denniskis committed Apr 10, 2013
1 parent e6e9414 commit c220911
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions lib/will_paginate/active_record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,14 @@ def paginate_by_sql(sql, options)
SQL
elsif adapter == "SQLServer"
options_limit = pager.per_page ? "TOP #{pager.per_page}" : ""
options[:order] ||= if order_by = sql.match(/ORDER BY(.*$)/i)
options[:order] ||= if order_by = query.match(/ORDER BY(.*$)/i)
order_by[1]
else
sql.match('FROM (.+?)\b')[1] + '.id'
query.match('FROM (.+?)\b')[1] + '.id'
end
sql.sub!(/ORDER BY.*$/i, '')
sql.sub!(/SELECT/i, "SELECT #{options_limit} * FROM ( SELECT ROW_NUMBER() OVER( ORDER BY #{options[:order] } ) AS row_num, ")
sql << ") AS t WHERE row_num > #{options[:offset]}"
query.sub!(/ORDER BY.*$/i, '')
query.sub!(/SELECT/i, "SELECT #{options_limit} * FROM ( SELECT ROW_NUMBER() OVER( ORDER BY #{options[:order] } ) AS row_num, ")
query << ") AS t WHERE row_num > #{pager.offset}"
else
query << " LIMIT #{pager.per_page} OFFSET #{pager.offset}"
end
Expand Down

0 comments on commit c220911

Please sign in to comment.