Sha256: b5a0dbce868c3705059100d17957f9dabe5cd2b530c0f115f246f425c8bf8024

Contents?: true

Size: 655 Bytes

Versions: 3

Compression:

Stored size: 655 Bytes

Contents

module SearchCop
  class QueryBuilder
    attr_accessor :query_info, :scope, :sql

    def initialize(model, query, scope)
      self.scope = scope
      self.query_info = QueryInfo.new(model, scope)

      arel = SearchCop::Parser.parse(query, query_info).optimize!

      self.sql = model.connection.visitor.accept(arel)
    end

    def associations
      all_associations - [query_info.model.name.tableize.to_sym]
    end

    private

    def all_associations
      scope.reflection.attributes.values.flatten.uniq.collect { |column| column.split(".").first }.collect { |column| scope.reflection.aliases[column] || column.to_sym }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
search_cop-1.0.2 lib/search_cop/query_builder.rb
search_cop-1.0.1 lib/search_cop/query_builder.rb
search_cop-1.0.0 lib/search_cop/query_builder.rb