mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Added automatic transaction block around AssociationCollection.<<, AssociationCollection.delete, and AssociationCollection.destroy_all
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@171 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*CVS*
|
||||
|
||||
* Added automatic transaction block around AssociationCollection.<<, AssociationCollection.delete, and AssociationCollection.destroy_all
|
||||
|
||||
* Fixed that Base#find will return an array if given an array -- regardless of the number of elements #270 [Marten]
|
||||
|
||||
* Fixed that has_and_belongs_to_many would generate bad sql when naming conventions differed from using vanilla "id" everywhere [RedTerror]
|
||||
|
||||
@@ -37,11 +37,14 @@ module ActiveRecord
|
||||
# Add +records+ to this association. Returns +self+ so method calls may be chained.
|
||||
# Since << flattens its argument list and inserts each record, +push+ and +concat+ behave identically.
|
||||
def <<(*records)
|
||||
flatten_deeper(records).each do |record|
|
||||
raise_on_type_mismatch(record)
|
||||
insert_record(record)
|
||||
@collection << record if loaded?
|
||||
@owner.transaction do
|
||||
flatten_deeper(records).each do |record|
|
||||
raise_on_type_mismatch(record)
|
||||
insert_record(record)
|
||||
@collection << record if loaded?
|
||||
end
|
||||
end
|
||||
|
||||
self
|
||||
end
|
||||
|
||||
@@ -51,13 +54,19 @@ module ActiveRecord
|
||||
# Remove +records+ from this association. Does not destroy +records+.
|
||||
def delete(*records)
|
||||
records = flatten_deeper(records)
|
||||
records.each { |record| raise_on_type_mismatch(record) }
|
||||
delete_records(records)
|
||||
records.each { |record| @collection.delete(record) } if loaded?
|
||||
|
||||
@owner.transaction do
|
||||
records.each { |record| raise_on_type_mismatch(record) }
|
||||
delete_records(records)
|
||||
records.each { |record| @collection.delete(record) } if loaded?
|
||||
end
|
||||
end
|
||||
|
||||
def destroy_all
|
||||
each { |record| record.destroy }
|
||||
@owner.transaction do
|
||||
each { |record| record.destroy }
|
||||
end
|
||||
|
||||
@collection = []
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user