- A
- B
- C
- E
- F
- G
- H
- I
- J
- L
- O
- P
- R
- S
- W
[RW] | bind_values | |
[RW] | create_with_value | |
[RW] | eager_load_values | |
[RW] | from_value | |
[RW] | group_values | |
[RW] | having_values | |
[RW] | includes_values | |
[RW] | joins_values | |
[RW] | limit_value | |
[RW] | lock_value | |
[RW] | offset_value | |
[RW] | order_values | |
[RW] | preload_values | |
[RW] | readonly_value | |
[RW] | reorder_value | |
[RW] | reverse_order_value | |
[RW] | select_values | |
[RW] | where_values |
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 195 def arel @arel ||= with_default_scope.build_arel end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 114 def bind(value) relation = clone relation.bind_values += [value] relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 199 def build_arel arel = table.from table build_joins(arel, @joins_values) unless @joins_values.empty? collapse_wheres(arel, (@where_values - ['']).uniq) arel.having(*@having_values.uniq.reject{|h| h.blank?}) unless @having_values.empty? arel.take(connection.sanitize_limit(@limit_value)) if @limit_value arel.skip(@offset_value) if @offset_value arel.group(*@group_values.uniq.reject{|g| g.blank?}) unless @group_values.empty? order = @reorder_value ? @reorder_value : @order_values order = reverse_sql_order(order) if @reverse_order_value arel.order(*order.uniq.reject{|o| o.blank?}) unless order.empty? build_select(arel, @select_values.uniq) arel.from(@from_value) if @from_value arel.lock(@lock_value) if @lock_value arel end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 167 def create_with(value) relation = clone relation.create_with_value = value ? create_with_value.merge(value) : {} relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 24 def eager_load(*args) return self if args.blank? relation = clone relation.eager_load_values += args relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 179 def extending(*modules) modules << Module.new(&Proc.new) if block_given? return self if modules.empty? relation = clone relation.send(:apply_modules, modules.flatten) relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 173 def from(value) relation = clone relation.from_value = value relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 79 def group(*args) return self if args.blank? relation = clone relation.group_values += args.flatten relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 128 def having(opts, *rest) return self if opts.blank? relation = clone relation.having_values += build_where(opts, rest) relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 14 def includes(*args) args.reject! {|a| a.blank? } return self if args.empty? relation = clone relation.includes_values = (relation.includes_values + args).flatten.uniq relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 103 def joins(*args) return self if args.compact.blank? relation = clone args.flatten! relation.joins_values += args relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 136 def limit(value) relation = clone relation.limit_value = value relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 148 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
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 142 def offset(value) relation = clone relation.offset_value = value relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 87 def order(*args) return self if args.blank? relation = clone relation.order_values += args.flatten relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 32 def preload(*args) return self if args.blank? relation = clone relation.preload_values += args relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 161 def readonly(value = true) relation = clone relation.readonly_value = value relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 95 def reorder(*args) return self if args.blank? relation = clone relation.reorder_value = args.flatten relation end
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 189 def reverse_order relation = clone relation.reverse_order_value = !relation.reverse_order_value relation end
Works in two unique ways.
First: takes a block so it can be used just like Array#select.
Model.scoped.select { |m| m.field == value }
This will build an array of objects from the database for the scope, converting them into an array and iterating through them using Array#select.
Second: Modifies the SELECT statement for the query so that only certain fields are retrieved:
>> Model.select(:field) => [#<Model field:value>]
Although in the above example it looks as though this method returns an array, it actually returns a relation object and can have other query methods appended to it, such as the other methods in ActiveRecord::QueryMethods.
This method will also take multiple parameters:
>> Model.select(:field, :other_field, :and_one_more) => [#<Model field: "value", other_field: "value", and_one_more: "value">]
Any attributes that do not have fields retrieved by a select will return `nil` when the getter method for that attribute is used:
>> Model.select(:field).first.other_field => nil
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 69 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
Source: show
# File activerecord/lib/active_record/relation/query_methods.rb, line 120 def where(opts, *rest) return self if opts.blank? relation = clone relation.where_values += build_where(opts, rest) relation end