diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-27 12:47:30 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-27 12:47:30 -0700 |
commit | 897b56bb2f8c2a904f546db1a32bad074463ec9b (patch) | |
tree | 8a79ce496c6555b8f78a23e40d81cba70be0b817 /activerecord/lib | |
parent | ecc83c1e6e36913c60d7107fb549c504b1a1e72c (diff) | |
download | rails-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.
Diffstat (limited to 'activerecord/lib')
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 |