class ThinkingSphinx::ActiveRecord::Interpreter

Public Instance Methods

define_source(&block) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 6
def define_source(&block)
  @source = @index.append_source
  instance_eval &block
end
group_by(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 11
def group_by(*columns)
  __source.groupings += columns
end
has(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 15
def has(*columns)
  build_properties(
    ::ThinkingSphinx::ActiveRecord::Attribute, columns
  ).each { |attribute| __source.add_attribute attribute }
end
indexes(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 21
def indexes(*columns)
  build_properties(
    ::ThinkingSphinx::ActiveRecord::Field, columns
  ).each { |field| __source.add_field field }
end
join(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 27
def join(*columns)
  __source.associations += columns.collect { |column|
    ::ThinkingSphinx::ActiveRecord::Association.new column
  }
end
polymorphs(column, options) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 33
def polymorphs(column, options)
  __source.polymorphs << ::ThinkingSphinx::ActiveRecord::Polymorpher.new(
    __source, column, options[:to]
  )
end
sanitize_sql(*arguments) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 39
def sanitize_sql(*arguments)
  __source.model.send :sanitize_sql, *arguments
end
set_database(hash_or_key) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 43
def set_database(hash_or_key)
  configuration = hash_or_key.is_a?(::Hash) ? hash_or_key :
    ::ActiveRecord::Base.configurations[hash_or_key.to_s]

  __source.set_database_settings configuration.symbolize_keys
end
set_property(properties) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 50
def set_property(properties)
  properties.each do |key, value|
    @index.send("#{key}=", value)   if @index.class.settings.include?(key)
    __source.send("#{key}=", value) if __source.class.settings.include?(key)
    __source.options[key] = value   if source_option?(key)
    @index.options[key] = value     if search_option?(key)
  end
end
where(*conditions) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 59
def where(*conditions)
  __source.conditions += conditions
end

Private Instance Methods

__source() click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 65
def __source
  @source ||= @index.append_source
end
build_properties(klass, columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 69
def build_properties(klass, columns)
  options = columns.extract_options!
  columns.collect { |column| klass.new(__source.model, column, options) }
end
source_option?(key) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 74
def source_option?(key)
  ::ThinkingSphinx::ActiveRecord::SQLSource::OPTIONS.include?(key)
end