提交 897b56bb 编写于 作者: A Aaron Patterson

I N C E P T I O N: flatten_deeper works around a bug in Ruby 1.8.2.

上级 ecc83c1e
......@@ -125,7 +125,7 @@ def <<(*records)
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 @@ def build_record(attrs, &block)
end
def remove_records(*records)
records = flatten_deeper(records)
records = records.flatten
records.each { |record| raise_on_type_mismatch(record) }
transaction do
......
......@@ -37,18 +37,6 @@ def construct_conditions
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
......@@ -10,7 +10,7 @@ class HasManyThroughAssociation < HasManyAssociation #:nodoc:
def destroy(*records)
transaction do
delete_records(flatten_deeper(records))
delete_records(records.flatten)
super
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册