Module: ActiveRecord::QueryMethods
- Extended by:
- ActiveSupport::Concern
- Defined in:
- activerecord/lib/active_record/relation/query_methods.rb
Instance Attribute Summary (collapse)
Instance Method Summary
(collapse)
append_features, extended, included
Instance Attribute Details
- (Object) create_with_value
Returns the value of attribute create_with_value
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def create_with_value
@create_with_value
end
|
- (Object) eager_load_values
Returns the value of attribute eager_load_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def eager_load_values
@eager_load_values
end
|
- (Object) from_value
Returns the value of attribute from_value
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def from_value
@from_value
end
|
- (Object) group_values
Returns the value of attribute group_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def group_values
@group_values
end
|
- (Object) having_values
Returns the value of attribute having_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def having_values
@having_values
end
|
- (Object) includes_values
Returns the value of attribute includes_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def includes_values
@includes_values
end
|
- (Object) joins_values
Returns the value of attribute joins_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def joins_values
@joins_values
end
|
- (Object) limit_value
Returns the value of attribute limit_value
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def limit_value
@limit_value
end
|
- (Object) lock_value
Returns the value of attribute lock_value
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def lock_value
@lock_value
end
|
- (Object) offset_value
Returns the value of attribute offset_value
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def offset_value
@offset_value
end
|
- (Object) order_values
Returns the value of attribute order_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def order_values
@order_values
end
|
- (Object) preload_values
Returns the value of attribute preload_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def preload_values
@preload_values
end
|
- (Object) readonly_value
Returns the value of attribute readonly_value
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def readonly_value
@readonly_value
end
|
- (Object) reorder_flag
Returns the value of attribute reorder_flag
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def reorder_flag
@reorder_flag
end
|
- (Object) select_values
Returns the value of attribute select_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def select_values
@select_values
end
|
- (Object) where_values
Returns the value of attribute where_values
8
9
10
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 8
def where_values
@where_values
end
|
Instance Method Details
149
150
151
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 149
def arel
@arel ||= build_arel
end
|
- (Object) build_arel
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 174
def build_arel
arel = table
arel = build_joins(arel, @joins_values) unless @joins_values.empty?
(@where_values - ['']).uniq.each do |where|
where = Arel.sql(where) if String === where
arel = arel.where(Arel::Nodes::Grouping.new(where))
end
arel = arel.having(*@having_values.uniq.reject{|h| h.blank?}) unless @having_values.empty?
arel = arel.take(@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
|
- (Object) create_with(value)
118
119
120
121
122
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 118
def create_with(value)
relation = clone
relation.create_with_value = value
relation
end
|
- (Object) custom_join_sql(*joins)
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 153
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.joins(arel)
end
|
- (Object) eager_load(*args)
22
23
24
25
26
|
# 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
|
- (Object) extending(*modules, &block)
130
131
132
133
134
135
136
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 130
def extending(*modules, &block)
modules << Module.new(&block) if block_given?
relation = clone
relation.send(:apply_modules, modules.flatten)
relation
end
|
- (Object) from(value)
124
125
126
127
128
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 124
def from(value)
relation = clone
relation.from_value = value
relation
end
|
- (Object) group(*args)
44
45
46
47
48
|
# 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
|
- (Object) having(*args)
81
82
83
84
85
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 81
def having(*args)
relation = clone
relation.having_values += build_where(*args) unless args.blank?
relation
end
|
- (Object) includes(*args)
12
13
14
15
16
17
18
19
20
|
# 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
|
- (Object) joins(*args)
66
67
68
69
70
71
72
73
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 66
def joins(*args)
relation = clone
args.flatten!
relation.joins_values += args unless args.blank?
relation
end
|
- (Object) limit(value)
87
88
89
90
91
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 87
def limit(value)
relation = clone
relation.limit_value = value
relation
end
|
- (Object) lock(locks = true)
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 99
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
|
- (Object) offset(value)
93
94
95
96
97
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 93
def offset(value)
relation = clone
relation.offset_value = value
relation
end
|
- (Object) order(*args)
50
51
52
53
54
|
# 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
|
- (Object) preload(*args)
28
29
30
31
32
|
# 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
|
- (Object) readonly(value = true)
112
113
114
115
116
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 112
def readonly(value = true)
relation = clone
relation.readonly_value = value
relation
end
|
- (Object) reorder(*args)
56
57
58
59
60
61
62
63
64
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 56
def reorder(*args)
ActiveSupport::Deprecation.warn "reorder is deprecated. Please use except(:order).order(...) instead", caller
relation = clone
unless args.blank?
relation.order_values = args
relation.reorder_flag = true
end
relation
end
|
- (Object) reverse_order
138
139
140
141
142
143
144
145
146
147
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 138
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::SqlLiteral.new(order))
end
|
- (Object) select(value = Proc.new)
34
35
36
37
38
39
40
41
42
|
# 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
|
- (Object) where(opts, *rest)
75
76
77
78
79
|
# File 'activerecord/lib/active_record/relation/query_methods.rb', line 75
def where(opts, *rest)
relation = clone
relation.where_values += build_where(opts, rest) unless opts.blank?
relation
end
|