Sha256: d9d559a3827038a20bfa18c6126598b6db725c4aa60431f1cb07569856f72a83

Contents?: true

Size: 1.23 KB

Versions: 23

Compression:

Stored size: 1.23 KB

Contents

if Rails.version < '5.0.0'
  module ActiveScaffold
    module OuterJoins
      extend ActiveSupport::Concern

      def left_outer_joins_values
        @values[:left_outer_joins] || []
      end

      def left_outer_joins_values=(values)
        raise ImmutableRelation if @loaded
        @values[:left_outer_joins] = values
      end

      def left_outer_joins(*args)
        check_if_method_has_arguments!('left_outer_joins', args)
        spawn.left_outer_joins!(*args.compact.flatten)
      end
      alias left_joins left_outer_joins

      def left_outer_joins!(*args)
        self.joins_values += [''] # HACK: for using left_outer_joins in update_all/delete_all
        self.left_outer_joins_values += args
        self
      end
      alias left_joins! left_outer_joins!

      def build_arel
        if left_outer_joins_values.empty?
          super
        else
          relation = except(:left_outer_joins)
          relation.joins! ActiveRecord::Associations::JoinDependency.new(@klass, left_outer_joins_values, [])
          relation.build_arel
        end
      end
    end
  end
  ActiveRecord::Relation.send :include, ActiveScaffold::OuterJoins
  module ActiveRecord::Querying
    delegate :left_outer_joins, :left_joins, :to => :all
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
active_scaffold-3.6.20 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.19 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.17 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.15 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.14 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.13 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.12 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.11.1 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.11 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.10 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.9 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.8 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.6 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.5 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.4.1 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.4 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.3 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.2 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.1 lib/active_scaffold/extensions/left_outer_joins.rb
active_scaffold-3.6.0 lib/active_scaffold/extensions/left_outer_joins.rb