Specify insert_record with NotImplementedError in AssociationCollection, to indicate that subclasses should implement it. Also add save_record to reduce duplication.

This commit is contained in:
Jon Leighton
2010-12-16 22:06:19 +00:00
committed by Aaron Patterson
parent 880f8419c4
commit 379c02267b
4 changed files with 14 additions and 11 deletions

View File

@@ -476,6 +476,17 @@ module ActiveRecord
end
private
# Do the relevant stuff to insert the given record into the association collection. The
# force param specifies whether or not an exception should be raised on failure. The
# validate param specifies whether validation should be performed (if force is false).
def insert_record(record, force = true, validate = true)
raise NotImplementedError
end
def save_record(record, force, validate)
force ? record.save! : record.save(:validate => validate)
end
def create_record(attrs)
attrs.update(@reflection.options[:conditions]) if @reflection.options[:conditions].is_a?(Hash)
ensure_owner_is_persisted!

View File

@@ -35,11 +35,7 @@ module ActiveRecord
def insert_record(record, force = true, validate = true)
if record.new_record?
if force
record.save!
else
return false unless record.save(:validate => validate)
end
return false unless save_record(record, force, validate)
end
if @reflection.options[:insert_sql]

View File

@@ -55,7 +55,7 @@ module ActiveRecord
def insert_record(record, force = false, validate = true)
set_belongs_to_association_for(record)
force ? record.save! : record.save(:validate => validate)
save_record(record, force, validate)
end
# Deletes the records according to the <tt>:dependent</tt> option.

View File

@@ -60,11 +60,7 @@ module ActiveRecord
def insert_record(record, force = true, validate = true)
if record.new_record?
if force
record.save!
else
return false unless record.save(:validate => validate)
end
return false unless save_record(record, force, validate)
end
through_association = @owner.send(@reflection.through_reflection.name)