Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Add scope-awareness feature

  • Loading branch information...
commit 22473145d1b0e92eed14a4eecca2068bfed4d20a 1 parent c08d31b
@chewi chewi authored
View
7 lib/activerecord-import/import.rb
@@ -276,6 +276,13 @@ def import_with_validations( column_names, array_of_attributes, options={} )
# information on +column_names+, +array_of_attributes_ and
# +options+.
def import_without_validations_or_callbacks( column_names, array_of_attributes, options={} )
+ scope_columns, scope_values = scope_attributes.to_a.transpose
+
+ unless scope_columns.blank?
+ column_names.concat scope_columns
+ array_of_attributes.each { |a| a.concat scope_values }
+ end
+
columns = column_names.each_with_index.map do |name, i|
column = columns_hash[name.to_s]
View
16 test/import_test.rb
@@ -293,4 +293,18 @@
assert_equal "2010/05/14".to_date, Topic.last.last_read.to_date
end
end
-end
+
+ context "importing through an association scope" do
+ [ true, false ].each do |b|
+ context "when validation is " + (b ? "enabled" : "disabled") do
+ it "should automatically set the foreign key column" do
+ books = [[ "David Chelimsky", "The RSpec Book" ], [ "Chad Fowler", "Rails Recipes" ]]
+ topic = Factory.create :topic
+ topic.books.import [ :author_name, :title ], books, :validate => b
+ assert_equal 2, topic.books.count
+ assert topic.books.all? { |b| b.topic_id == topic.id }
+ end
+ end
+ end
+ end
+end
View
5 test/test_helper.rb
@@ -44,3 +44,8 @@
require adapter_schema if File.exists?(adapter_schema)
Dir[File.dirname(__FILE__) + "/models/*.rb"].each{ |file| require file }
+
+# Prevent this deprecation warning from breaking the tests.
+module Rake::DeprecatedObjectDSL
+ remove_method :import
+end

0 comments on commit 2247314

Please sign in to comment.
Something went wrong with that request. Please try again.