aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb2
-rw-r--r--actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb2
-rw-r--r--actionpack/test/template/asset_tag_helper_test.rb24
-rw-r--r--activerecord/CHANGELOG4
-rw-r--r--activerecord/lib/active_record/associations/preloader/through_association.rb5
5 files changed, 28 insertions, 9 deletions
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb b/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
index b9126af944..82bbfcc7d2 100644
--- a/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
+++ b/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
@@ -69,7 +69,7 @@ module ActionView
def register_javascript_expansion(expansions)
js_expansions = JavascriptIncludeTag.expansions
expansions.each do |key, values|
- js_expansions[key] = (js_expansions[key] || []) | Array(values) if values
+ js_expansions[key] = (js_expansions[key] || []) | Array(values)
end
end
end
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb b/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb
index f3e041de95..a48c87b49a 100644
--- a/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb
+++ b/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb
@@ -46,7 +46,7 @@ module ActionView
def register_stylesheet_expansion(expansions)
style_expansions = StylesheetIncludeTag.expansions
expansions.each do |key, values|
- style_expansions[key] = (style_expansions[key] || []) | Array(values) if values
+ style_expansions[key] = (style_expansions[key] || []) | Array(values)
end
end
end
diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb
index a1a6b5f1d0..1bf748af14 100644
--- a/actionpack/test/template/asset_tag_helper_test.rb
+++ b/actionpack/test/template/asset_tag_helper_test.rb
@@ -303,8 +303,17 @@ class AssetTagHelperTest < ActionView::TestCase
end
def test_custom_javascript_expansions_with_undefined_symbol
+ assert_raise(ArgumentError) { javascript_include_tag('first', :unknown, 'last') }
+ end
+
+ def test_custom_javascript_expansions_with_nil_value
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => nil
- assert_raise(ArgumentError) { javascript_include_tag('first', :monkey, 'last') }
+ assert_dom_equal %(<script src="/javascripts/first.js" type="text/javascript"></script>\n<script src="/javascripts/last.js" type="text/javascript"></script>), javascript_include_tag('first', :monkey, 'last')
+ end
+
+ def test_custom_javascript_expansions_with_empty_array_value
+ ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => []
+ assert_dom_equal %(<script src="/javascripts/first.js" type="text/javascript"></script>\n<script src="/javascripts/last.js" type="text/javascript"></script>), javascript_include_tag('first', :monkey, 'last')
end
def test_custom_javascript_and_stylesheet_expansion_with_same_name
@@ -379,9 +388,18 @@ class AssetTagHelperTest < ActionView::TestCase
assert_dom_equal %(<link href="/stylesheets/london.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/wellington.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/amsterdam.css" media="screen" rel="stylesheet" type="text/css" />), stylesheet_link_tag('london', :cities)
end
- def test_custom_stylesheet_expansions_with_undefined_symbol
+ def test_custom_stylesheet_expansions_with_unknown_symbol
+ assert_raise(ArgumentError) { stylesheet_link_tag('first', :unknown, 'last') }
+ end
+
+ def test_custom_stylesheet_expansions_with_nil_value
ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :monkey => nil
- assert_raise(ArgumentError) { stylesheet_link_tag('first', :monkey, 'last') }
+ assert_dom_equal %(<link href="/stylesheets/first.css" rel="stylesheet" type="text/css" media="screen" />\n<link href="/stylesheets/last.css" rel="stylesheet" type="text/css" media="screen" />), stylesheet_link_tag('first', :monkey, 'last')
+ end
+
+ def test_custom_stylesheet_expansions_with_empty_array_value
+ ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :monkey => []
+ assert_dom_equal %(<link href="/stylesheets/first.css" rel="stylesheet" type="text/css" media="screen" />\n<link href="/stylesheets/last.css" rel="stylesheet" type="text/css" media="screen" />), stylesheet_link_tag('first', :monkey, 'last')
end
def test_registering_stylesheet_expansions_merges_with_existing_expansions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG
index 3a63c08b2d..f82bd0da92 100644
--- a/activerecord/CHANGELOG
+++ b/activerecord/CHANGELOG
@@ -163,10 +163,6 @@
end
[Santiago Pastorino]
-<<<<<<< Updated upstream
->>>>>>> association_fixes
-=======
->>>>>>> Stashed changes
* Setting the id of a belongs_to object will update the reference to the
object. [#2989 state:resolved]
diff --git a/activerecord/lib/active_record/associations/preloader/through_association.rb b/activerecord/lib/active_record/associations/preloader/through_association.rb
index ad6374d09a..30558ae29c 100644
--- a/activerecord/lib/active_record/associations/preloader/through_association.rb
+++ b/activerecord/lib/active_record/associations/preloader/through_association.rb
@@ -33,8 +33,13 @@ module ActiveRecord
through_options
).run
+ # TODO: Verify that this is actually necessary and not just a symptom of an
+ # underlying inefficiency
+ identity_map = {}
+
Hash[owners.map do |owner|
through_records = Array.wrap(owner.send(through_reflection.name))
+ through_records.map! { |record| identity_map[record] ||= record }
# Dont cache the association - we would only be caching a subset
if reflection.options[:source_type] && through_reflection.collection?