aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-12-27 12:47:30 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-12-27 12:47:30 -0700
commit897b56bb2f8c2a904f546db1a32bad074463ec9b (patch)
tree8a79ce496c6555b8f78a23e40d81cba70be0b817
parentecc83c1e6e36913c60d7107fb549c504b1a1e72c (diff)
downloadrails-897b56bb2f8c2a904f546db1a32bad074463ec9b.tar.gz
rails-897b56bb2f8c2a904f546db1a32bad074463ec9b.tar.bz2
rails-897b56bb2f8c2a904f546db1a32bad074463ec9b.zip
I N C E P T I O N: flatten_deeper works around a bug in Ruby 1.8.2.
-rw-r--r--activerecord/lib/active_record/associations/association_collection.rb4
-rw-r--r--activerecord/lib/active_record/associations/has_association.rb12
-rw-r--r--activerecord/lib/active_record/associations/has_many_through_association.rb2
3 files changed, 3 insertions, 15 deletions
diff --git a/activerecord/lib/active_record/associations/association_collection.rb b/activerecord/lib/active_record/associations/association_collection.rb
index 97d9288874..108e316672 100644
--- a/activerecord/lib/active_record/associations/association_collection.rb
+++ b/activerecord/lib/active_record/associations/association_collection.rb
@@ -125,7 +125,7 @@ module ActiveRecord
load_target if @owner.new_record?
transaction do
- flatten_deeper(records).each do |record|
+ records.flatten.each do |record|
raise_on_type_mismatch(record)
add_record_to_target_with_callbacks(record) do |r|
result &&= insert_record(record) unless @owner.new_record?
@@ -501,7 +501,7 @@ module ActiveRecord
end
def remove_records(*records)
- records = flatten_deeper(records)
+ records = records.flatten
records.each { |record| raise_on_type_mismatch(record) }
transaction do
diff --git a/activerecord/lib/active_record/associations/has_association.rb b/activerecord/lib/active_record/associations/has_association.rb
index 4407e2ea9a..0ecdb696ea 100644
--- a/activerecord/lib/active_record/associations/has_association.rb
+++ b/activerecord/lib/active_record/associations/has_association.rb
@@ -37,18 +37,6 @@ module ActiveRecord
conditions << Arel.sql(sql_conditions) if sql_conditions
aliased_table.create_and(conditions)
end
-
- if RUBY_VERSION < '1.9.2'
- # Array#flatten has problems with recursive arrays before Ruby 1.9.2.
- # Going one level deeper solves the majority of the problems.
- def flatten_deeper(array)
- array.collect { |element| (element.respond_to?(:flatten) && !element.is_a?(Hash)) ? element.flatten : element }.flatten
- end
- else
- def flatten_deeper(array)
- array.flatten
- end
- end
end
end
end
diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb
index ba464c8d79..e2b008034e 100644
--- a/activerecord/lib/active_record/associations/has_many_through_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_through_association.rb
@@ -10,7 +10,7 @@ module ActiveRecord
def destroy(*records)
transaction do
- delete_records(flatten_deeper(records))
+ delete_records(records.flatten)
super
end
end