Add scope-awareness feature
This commit is contained in:
parent
c08d31b528
commit
22473145d1
|
@ -276,6 +276,13 @@ class ActiveRecord::Base
|
|||
# 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]
|
||||
|
||||
|
|
|
@ -293,4 +293,18 @@ describe "#import" do
|
|||
assert_equal "2010/05/14".to_date, Topic.last.last_read.to_date
|
||||
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
|
|
@ -44,3 +44,8 @@ adapter_schema = test_dir.join("schema/#{adapter}_schema.rb")
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue