Sha256: 55cd7a3c660d78ec864bf3b30e599d9e8b93950cc0f2e14fecb1fb35bb2da241
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true class ThinkingSphinx::ActiveRecord::SourceJoins def self.call(model, source) new(model, source).call end def initialize(model, source) @model, @source = model, source end def call append_specified_associations append_property_associations joins end private attr_reader :model, :source def append_property_associations source.properties.collect(&:columns).each do |columns| columns.each { |column| append_column_associations column } end end def append_column_associations(column) return if column.__stack.empty? joins.add_join_to column.__stack if column_exists?(column) end def append_specified_associations source.associations.reject(&:string?).each do |association| joins.add_join_to association.stack end end def column_exists?(column) Joiner::Path.new(model, column.__stack).model true rescue Joiner::AssociationNotFound false end def joins @joins ||= begin joins = Joiner::Joins.new model if joins.respond_to?(:join_association_class) joins.join_association_class = ThinkingSphinx::ActiveRecord::JoinAssociation end joins end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
thinking-sphinx-4.1.0 | lib/thinking_sphinx/active_record/source_joins.rb |
thinking-sphinx-4.0.0 | lib/thinking_sphinx/active_record/source_joins.rb |