class ThinkingSphinx::ActiveRecord::Interpreter

Public Instance Methods

define_source(&block) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 4
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 9
def group_by(*columns)
  __source.groupings += columns
end
has(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 13
def has(*columns)
  __source.attributes += build_properties(
    ::ThinkingSphinx::ActiveRecord::Attribute, columns
  )
end
indexes(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 19
def indexes(*columns)
  __source.fields += build_properties(
    ::ThinkingSphinx::ActiveRecord::Field, columns
  )
end
join(*columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 25
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 31
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 37
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 41
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
end
set_property(properties) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 48
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)
  end
end
where(*conditions) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 56
def where(*conditions)
  __source.conditions += conditions
end

Private Instance Methods

__source() click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 62
def __source
  @source ||= @index.append_source
end
build_properties(klass, columns) click to toggle source
# File lib/thinking_sphinx/active_record/interpreter.rb, line 66
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 71
def source_option?(key)
  ::ThinkingSphinx::ActiveRecord::SQLSource::OPTIONS.include?(key)
end