Methods
Attributes
[RW] includes_values
[RW] eager_load_values
[RW] preload_values
[RW] select_values
[RW] group_values
[RW] order_values
[RW] reorder_flag
[RW] joins_values
[RW] where_values
[RW] having_values
[RW] limit_value
[RW] offset_value
[RW] lock_value
[RW] readonly_value
[RW] create_with_value
[RW] from_value
Public Instance methods
arel()
  # File activerecord/lib/active_record/relation/query_methods.rb, line 148
def arel
  @arel ||= build_arel
end
build_arel()
  # File activerecord/lib/active_record/relation/query_methods.rb, line 173
def build_arel
  arel = table

  arel = build_joins(arel, @joins_values) unless @joins_values.empty?

  arel = collapse_wheres(arel, (@where_values - ['']).uniq)

  arel = arel.having(*@having_values.uniq.reject{|h| h.blank?}) unless @having_values.empty?

  arel = arel.take(connection.sanitize_limit(@limit_value)) if @limit_value
  arel = arel.skip(@offset_value) if @offset_value

  arel = arel.group(*@group_values.uniq.reject{|g| g.blank?}) unless @group_values.empty?

  arel = arel.order(*@order_values.uniq.reject{|o| o.blank?}) unless @order_values.empty?

  arel = build_select(arel, @select_values.uniq)

  arel = arel.from(@from_value) if @from_value
  arel = arel.lock(@lock_value) if @lock_value

  arel
end
create_with(value)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 117
def create_with(value)
  relation = clone
  relation.create_with_value = value
  relation
end
custom_join_sql(*joins)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 152
def custom_join_sql(*joins)
  arel = table.select_manager

  joins.each do |join|
    next if join.blank?

    @implicit_readonly = true

    case join
    when Array
      join = Arel.sql(join.join(' ')) if array_of_strings?(join)
    when String
      join = Arel.sql(join)
    end

    arel.join(join)
  end

  arel.join_sql
end
eager_load(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 22
def eager_load(*args)
  relation = clone
  relation.eager_load_values += args unless args.blank?
  relation
end
extending(*modules, &block)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 129
def extending(*modules, &block)
  modules << Module.new(&block) if block_given?

  relation = clone
  relation.send(:apply_modules, modules.flatten)
  relation
end
from(value)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 123
def from(value)
  relation = clone
  relation.from_value = value
  relation
end
group(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 44
def group(*args)
  relation = clone
  relation.group_values += args.flatten unless args.blank?
  relation
end
having(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 80
def having(*args)
  relation = clone
  relation.having_values += build_where(*args) unless args.blank?
  relation
end
includes(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 12
def includes(*args)
  args.reject! {|a| a.blank? }

  return clone if args.empty?

  relation = clone
  relation.includes_values = (relation.includes_values + args).flatten.uniq
  relation
end
joins(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 65
def joins(*args)
  relation = clone

  args.flatten!
  relation.joins_values += args unless args.blank?

  relation
end
limit(value)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 86
def limit(value)
  relation = clone
  relation.limit_value = value
  relation
end
lock(locks = true)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 98
def lock(locks = true)
  relation = clone

  case locks
  when String, TrueClass, NilClass
    relation.lock_value = locks || true
  else
    relation.lock_value = false
  end

  relation
end
offset(value)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 92
def offset(value)
  relation = clone
  relation.offset_value = value
  relation
end
order(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 50
def order(*args)
  relation = clone
  relation.order_values += args.flatten unless args.blank?
  relation
end
preload(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 28
def preload(*args)
  relation = clone
  relation.preload_values += args unless args.blank?
  relation
end
readonly(value = true)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 111
def readonly(value = true)
  relation = clone
  relation.readonly_value = value
  relation
end
reorder(*args)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 56
def reorder(*args)
  relation = clone
  unless args.blank?
    relation.order_values = args
    relation.reorder_flag = true
  end
  relation
end
reverse_order()
  # File activerecord/lib/active_record/relation/query_methods.rb, line 137
def reverse_order
  order_clause = arel.order_clauses.join(', ')
  relation = except(:order)

  order = order_clause.blank? ?
    "#{@klass.table_name}.#{@klass.primary_key} DESC" :
    reverse_sql_order(order_clause)

  relation.order(Arel.sql(order))
end
select(value = Proc.new)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 34
def select(value = Proc.new)
  if block_given?
    to_a.select {|*block_args| value.call(*block_args) }
  else
    relation = clone
    relation.select_values += Array.wrap(value)
    relation
  end
end
where(opts, *rest)
  # File activerecord/lib/active_record/relation/query_methods.rb, line 74
def where(opts, *rest)
  relation = clone
  relation.where_values += build_where(opts, rest) unless opts.blank?
  relation
end