mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Get rid of AssociationCollection#save_record
This commit is contained in:
@@ -197,16 +197,15 @@ module ActiveRecord
|
||||
else
|
||||
create_record(attrs) do |record|
|
||||
yield(record) if block_given?
|
||||
insert_record(record, false)
|
||||
insert_record(record)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create!(attrs = {})
|
||||
create_record(attrs) do |record|
|
||||
yield(record) if block_given?
|
||||
insert_record(record, true)
|
||||
end
|
||||
def create!(attrs = {}, &block)
|
||||
record = create(attrs, &block)
|
||||
Array.wrap(record).each(&:save!)
|
||||
record
|
||||
end
|
||||
|
||||
# Returns the size of the collection by executing a SELECT COUNT(*)
|
||||
@@ -419,17 +418,11 @@ module ActiveRecord
|
||||
end + existing
|
||||
end
|
||||
|
||||
# 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)
|
||||
# Do the relevant stuff to insert the given record into the association collection.
|
||||
def insert_record(record, validate = true)
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def save_record(record, force, validate)
|
||||
force ? record.save! : record.save(:validate => validate)
|
||||
end
|
||||
|
||||
def create_record(attributes, &block)
|
||||
ensure_owner_is_persisted!
|
||||
transaction { build_record(attributes, &block) }
|
||||
|
||||
@@ -11,10 +11,8 @@ module ActiveRecord
|
||||
|
||||
protected
|
||||
|
||||
def insert_record(record, force = true, validate = true)
|
||||
if record.new_record?
|
||||
return false unless save_record(record, force, validate)
|
||||
end
|
||||
def insert_record(record, validate = true)
|
||||
return if record.new_record? && !record.save(:validate => validate)
|
||||
|
||||
if @reflection.options[:insert_sql]
|
||||
@owner.connection.insert(interpolate(@reflection.options[:insert_sql], record))
|
||||
@@ -27,7 +25,7 @@ module ActiveRecord
|
||||
@owner.connection.insert stmt.to_sql
|
||||
end
|
||||
|
||||
true
|
||||
record
|
||||
end
|
||||
|
||||
def association_scope
|
||||
|
||||
@@ -8,9 +8,9 @@ module ActiveRecord
|
||||
class HasManyAssociation < AssociationCollection #:nodoc:
|
||||
protected
|
||||
|
||||
def insert_record(record, force = false, validate = true)
|
||||
def insert_record(record, validate = true)
|
||||
set_owner_attributes(record)
|
||||
save_record(record, force, validate)
|
||||
record.save(:validate => validate)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -22,12 +22,21 @@ module ActiveRecord
|
||||
end
|
||||
end
|
||||
|
||||
def <<(*records)
|
||||
unless @owner.new_record?
|
||||
records.flatten.each do |record|
|
||||
raise_on_type_mismatch(record)
|
||||
record.save! if record.new_record?
|
||||
end
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def insert_record(record, force = true, validate = true)
|
||||
if record.new_record?
|
||||
return unless save_record(record, force, validate)
|
||||
end
|
||||
def insert_record(record, validate = true)
|
||||
return if record.new_record? && !record.save(:validate => validate)
|
||||
|
||||
through_association = @owner.send(@reflection.through_reflection.name)
|
||||
through_association.create!(construct_join_attributes(record))
|
||||
|
||||
@@ -312,7 +312,7 @@ module ActiveRecord
|
||||
association.destroy(record)
|
||||
elsif autosave != false && (@new_record_before_save || record.new_record?)
|
||||
if autosave
|
||||
saved = association.send(:insert_record, record, false, false)
|
||||
saved = association.send(:insert_record, record, false)
|
||||
else
|
||||
association.send(:insert_record, record)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user