aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record')
-rwxr-xr-xactiverecord/lib/active_record/base.rb9
-rw-r--r--activerecord/lib/active_record/locking/optimistic.rb4
2 files changed, 7 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 2375211577..7a34e345a2 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -2602,7 +2602,7 @@ module ActiveRecord #:nodoc:
# be made (since they can't be persisted).
def destroy
unless new_record?
- arel_table.where(arel_table[self.class.primary_key].eq(id)).delete
+ arel_table(true).where(arel_table[self.class.primary_key].eq(id)).delete
end
freeze
@@ -2904,7 +2904,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?
- arel_table.where(arel_table[self.class.primary_key].eq(id)).update(attributes_with_values)
+ arel_table(true).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
@@ -2991,8 +2991,9 @@ module ActiveRecord #:nodoc:
default
end
- def arel_table
- @arel_table = Arel::Table.new(self.class.table_name)
+ def arel_table(reload = nil)
+ @arel_table = Relation.new(self, self.class.table_name) if reload || @arel_table.nil?
+ @arel_table
end
# Returns a copy of the attributes hash where all the values have been safely quoted for use in
diff --git a/activerecord/lib/active_record/locking/optimistic.rb b/activerecord/lib/active_record/locking/optimistic.rb
index bc22c2a511..4e833ec871 100644
--- a/activerecord/lib/active_record/locking/optimistic.rb
+++ b/activerecord/lib/active_record/locking/optimistic.rb
@@ -89,7 +89,7 @@ module ActiveRecord
attribute_names.uniq!
begin
- affected_rows = arel_table.where(
+ affected_rows = arel_table(true).where(
arel_table[self.class.primary_key].eq(quoted_id).and(
arel_table[self.class.locking_column].eq(quote_value(previous_value))
)
@@ -116,7 +116,7 @@ module ActiveRecord
lock_col = self.class.locking_column
previous_value = send(lock_col).to_i
- affected_rows = arel_table.where(
+ affected_rows = arel_table(true).where(
arel_table[self.class.primary_key].eq(quoted_id).and(
arel_table[self.class.locking_column].eq(quote_value(previous_value))
)