- arel
- build_arel
- create_with
- custom_join_sql
- eager_load
- extending
- from
- group
- having
- includes
- joins
- limit
- lock
- offset
- order
- preload
- readonly
- reorder
- reverse_order
- select
- where
[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 |
[ show source ]
# File activerecord/lib/active_record/relation/query_methods.rb, line 148 def arel @arel ||= build_arel end
[ show source ]
# 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
[ show source ]
# File activerecord/lib/active_record/relation/query_methods.rb, line 117 def create_with(value) relation = clone relation.create_with_value = value relation end
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# File activerecord/lib/active_record/relation/query_methods.rb, line 123 def from(value) relation = clone relation.from_value = value relation end
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# File activerecord/lib/active_record/relation/query_methods.rb, line 86 def limit(value) relation = clone relation.limit_value = value relation end
[ show source ]
# 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
[ show source ]
# File activerecord/lib/active_record/relation/query_methods.rb, line 92 def offset(value) relation = clone relation.offset_value = value relation end
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# File activerecord/lib/active_record/relation/query_methods.rb, line 111 def readonly(value = true) relation = clone relation.readonly_value = value relation end
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# 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
[ show source ]
# 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