mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Refactor to use arel_table method, and also use the same method name for instance and class methods.
This commit is contained in:
parent
c9896884a4
commit
3fd467e9ed
3 changed files with 18 additions and 21 deletions
|
@ -899,7 +899,7 @@ module ActiveRecord #:nodoc:
|
|||
# Both calls delete the affected posts all at once with a single DELETE statement. If you need to destroy dependent
|
||||
# associations or call your <tt>before_*</tt> or +after_destroy+ callbacks, use the +destroy_all+ method instead.
|
||||
def delete_all(conditions = nil)
|
||||
Arel(table_name).where(construct_conditions(conditions, scope(:find))).delete
|
||||
arel_table.where(construct_conditions(conditions, scope(:find))).delete
|
||||
end
|
||||
|
||||
# Returns the result of an SQL statement that should only include a COUNT(*) in the SELECT part.
|
||||
|
@ -2647,8 +2647,7 @@ module ActiveRecord #:nodoc:
|
|||
# be made (since they can't be persisted).
|
||||
def destroy
|
||||
unless new_record?
|
||||
table = Arel(self.class.table_name)
|
||||
table.where(table[self.class.primary_key].eq(quoted_id)).delete
|
||||
arel_table.where(arel_table[self.class.primary_key].eq(id)).delete
|
||||
end
|
||||
|
||||
freeze
|
||||
|
@ -2943,7 +2942,7 @@ module ActiveRecord #:nodoc:
|
|||
def update(attribute_names = @attributes.keys)
|
||||
attributes_with_values = arel_attributes_values(false, false, attribute_names)
|
||||
return 0 if attributes_with_values.empty?
|
||||
table.where(table[self.class.primary_key].eq(id)).update(attributes_with_values)
|
||||
arel_table.where(arel_table[self.class.primary_key].eq(id)).update(attributes_with_values)
|
||||
end
|
||||
|
||||
# Creates a record with values matching those of the instance attributes
|
||||
|
@ -3053,7 +3052,7 @@ module ActiveRecord #:nodoc:
|
|||
include_readonly_attributes ? quoted : remove_readonly_attributes(quoted)
|
||||
end
|
||||
|
||||
def table
|
||||
def arel_table
|
||||
@arel_table ||= Arel(self.class.table_name)
|
||||
end
|
||||
|
||||
|
@ -3065,7 +3064,7 @@ module ActiveRecord #:nodoc:
|
|||
value = read_attribute(name)
|
||||
|
||||
if include_readonly_attributes || (!include_readonly_attributes && !self.class.readonly_attributes.include?(name))
|
||||
attrs[table[name]] = value
|
||||
attrs[arel_table[name]] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -124,6 +124,7 @@ module ActiveRecord
|
|||
# Person.sum("2 * age")
|
||||
def calculate(operation, column_name, options = {})
|
||||
validate_calculation_options(operation, options)
|
||||
operation = operation.to_s.downcase
|
||||
|
||||
scope = scope(:find)
|
||||
|
||||
|
@ -135,7 +136,7 @@ module ActiveRecord
|
|||
joins << join_dependency.join_associations.collect{|join| join.association_join }.join
|
||||
end
|
||||
|
||||
if operation == :count
|
||||
if operation == "count"
|
||||
if merged_includes.any?
|
||||
distinct = true
|
||||
column_name = options[:select] || primary_key
|
||||
|
@ -162,7 +163,7 @@ module ActiveRecord
|
|||
|
||||
def execute_simple_calculation(operation, column_name, options) #:nodoc:
|
||||
table = options[:from] || table_name
|
||||
value = if operation == :count
|
||||
value = if operation == 'count'
|
||||
if column_name == :all && options[:select].blank?
|
||||
column_name = "*"
|
||||
elsif !options[:select].blank?
|
||||
|
@ -187,17 +188,15 @@ module ActiveRecord
|
|||
options[:group] = connection.adapter_name == 'FrontBase' ? group_alias : group_field
|
||||
|
||||
aggregate_alias = column_alias_for(operation, column_name)
|
||||
if operation == :count && column_name == :all
|
||||
|
||||
if operation == 'count' && column_name == :all
|
||||
options[:select] = "COUNT(*) AS count_all, #{group_field} AS #{group_alias}"
|
||||
else
|
||||
arel_column = Arel::Attribute.new(Arel(table_name), column_name).send(operation)
|
||||
arel_column = Arel::Attribute.new(arel_table, column_name).send(operation)
|
||||
options[:select] = "#{arel_column.as(aggregate_alias).to_sql}, #{group_field} AS #{group_alias}"
|
||||
end
|
||||
|
||||
|
||||
sql = construct_finder_arel(options)
|
||||
|
||||
calculated_data = connection.select_all(sql.to_sql)
|
||||
calculated_data = connection.select_all(construct_finder_sql(options))
|
||||
|
||||
if association
|
||||
key_ids = calculated_data.collect { |row| row[group_alias] }
|
||||
|
@ -275,7 +274,6 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def type_cast_calculated_value(value, column, operation = nil)
|
||||
operation = operation.to_s.downcase
|
||||
case operation
|
||||
when 'count' then value.to_i
|
||||
when 'sum' then type_cast_using_column(value || '0', column)
|
||||
|
|
|
@ -89,9 +89,9 @@ module ActiveRecord
|
|||
attribute_names.uniq!
|
||||
|
||||
begin
|
||||
affected_rows = table.where(
|
||||
table[self.class.primary_key].eq(quoted_id).and(
|
||||
table[self.class.locking_column].eq(quote_value(previous_value))
|
||||
affected_rows = arel_table.where(
|
||||
arel_table[self.class.primary_key].eq(quoted_id).and(
|
||||
arel_table[self.class.locking_column].eq(quote_value(previous_value))
|
||||
)
|
||||
).update(arel_attributes_values(false, false, attribute_names))
|
||||
|
||||
|
@ -116,9 +116,9 @@ module ActiveRecord
|
|||
lock_col = self.class.locking_column
|
||||
previous_value = send(lock_col).to_i
|
||||
|
||||
affected_rows = table.where(
|
||||
table[self.class.primary_key].eq(quoted_id).and(
|
||||
table[self.class.locking_column].eq(quote_value(previous_value))
|
||||
affected_rows = arel_table.where(
|
||||
arel_table[self.class.primary_key].eq(quoted_id).and(
|
||||
arel_table[self.class.locking_column].eq(quote_value(previous_value))
|
||||
)
|
||||
).delete
|
||||
|
||||
|
|
Loading…
Reference in a new issue