Sha256: 109b5db4da81db1ed5452ff119b3765b10782c9a2ebdfd9e7442fe8866364be2

Contents?: true

Size: 691 Bytes

Versions: 1

Compression:

Stored size: 691 Bytes

Contents

require 'active_record'
require 'active_record/relation/query_methods'

module ActiveRecordMysqlIndexHint
  def use_index(*args)
    from_with_index_hint 'USE', *args
  end

  def force_index(*args)
    from_with_index_hint 'FORCE', *args
  end

  def ignore_index(*args)
    from_with_index_hint 'IGNORE', *args
  end

  private
  def from_with_index_hint(hint_type, *args)
    return self if args.blank?
    indexes = args.map {|index| connection.quote_column_name index }
    self.from("#{quoted_table_name} #{hint_type} INDEX(#{indexes.join(', ')})")
  end
end

ActiveRecord::Base.send :extend, ActiveRecordMysqlIndexHint
ActiveRecord::Relation.send :include, ActiveRecordMysqlIndexHint

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activerecord-mysql-index-hint-0.0.1 lib/activerecord-mysql-index-hint.rb