Skip to content

Instantly share code, notes, and snippets.

@DmitryBash
Forked from TheKidCoder/example_controller.rb
Created February 25, 2020 21:00
Show Gist options
  • Save DmitryBash/09944195d1ccfa57b6f1043113efe5d9 to your computer and use it in GitHub Desktop.
Save DmitryBash/09944195d1ccfa57b6f1043113efe5d9 to your computer and use it in GitHub Desktop.
Rails - Sanitize Ordering Params
class ExampleController
include OrderingHelpers
def index
@clients = Clients.order(sanitized_ordering).where(user_id: current_user.id)
end
end
module OrderingHelpers
extend ActiveSupport::Concern
def sanitized_ordering
"#{sanitize_column(params[:order_by])} #{sanitize_column_direction(params[:sort_direction])}"
end
private
def sanitize_column(column)
resource.column_names.include?(column) ? column : "created_at"
end
def sanitize_column_direction(direction)
direction = direction.upcase
['DESC', 'ASC'].include?(direction) ? direction : "DESC"
end
def resource
controller_name.camelize.singularize.safe_constantize
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment