Browse files

Specify insert_record with NotImplementedError in AssociationCollecti…

…on, to indicate that subclasses should implement it. Also add save_record to reduce duplication.
  • Loading branch information...
1 parent 880f841 commit 379c02267b3cbbf6d1ac48bc79ec6ea01af7b53a @jonleighton jonleighton committed with tenderlove Dec 16, 2010
View
11 activerecord/lib/active_record/associations/association_collection.rb
@@ -476,6 +476,17 @@ def add_record_to_target_with_callbacks(record)
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
6 activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb
@@ -35,11 +35,7 @@ def count_records
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
2 activerecord/lib/active_record/associations/has_many_association.rb
@@ -55,7 +55,7 @@ def cached_counter_attribute_name
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
6 activerecord/lib/active_record/associations/has_many_through_association.rb
@@ -60,11 +60,7 @@ def construct_find_options!(options)
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)

0 comments on commit 379c022

Please sign in to comment.