mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:01 -05:00
use persisted? instead of new_record? wherever possible
- persisted? is the API defined in ActiveModel - makes it easier for extension libraries to conform to ActiveModel APIs without concern for whether the extended object is specifically ActiveRecord [#5927 state:committed] Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
This commit is contained in:
committed by
Santiago Pastorino
parent
f57b5197b3
commit
1f06652a57
@@ -6,7 +6,7 @@ module ActiveRecord
|
||||
def clear_aggregation_cache #:nodoc:
|
||||
self.class.reflect_on_all_aggregations.to_a.each do |assoc|
|
||||
instance_variable_set "@#{assoc.name}", nil
|
||||
end unless self.new_record?
|
||||
end if self.persisted?
|
||||
end
|
||||
|
||||
# Active Record implements aggregation through a macro-like class method called +composed_of+
|
||||
|
||||
@@ -118,7 +118,7 @@ module ActiveRecord
|
||||
def clear_association_cache #:nodoc:
|
||||
self.class.reflect_on_all_associations.to_a.each do |assoc|
|
||||
instance_variable_set "@#{assoc.name}", nil
|
||||
end unless self.new_record?
|
||||
end if self.persisted?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -120,13 +120,13 @@ module ActiveRecord
|
||||
# Since << flattens its argument list and inserts each record, +push+ and +concat+ behave identically.
|
||||
def <<(*records)
|
||||
result = true
|
||||
load_target if @owner.new_record?
|
||||
load_target unless @owner.persisted?
|
||||
|
||||
transaction do
|
||||
flatten_deeper(records).each do |record|
|
||||
raise_on_type_mismatch(record)
|
||||
add_record_to_target_with_callbacks(record) do |r|
|
||||
result &&= insert_record(record) unless @owner.new_record?
|
||||
result &&= insert_record(record) if @owner.persisted?
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -285,12 +285,12 @@ module ActiveRecord
|
||||
# This method is abstract in the sense that it relies on
|
||||
# +count_records+, which is a method descendants have to provide.
|
||||
def size
|
||||
if @owner.new_record? || (loaded? && !@reflection.options[:uniq])
|
||||
if !@owner.persisted? || (loaded? && !@reflection.options[:uniq])
|
||||
@target.size
|
||||
elsif !loaded? && @reflection.options[:group]
|
||||
load_target.size
|
||||
elsif !loaded? && !@reflection.options[:uniq] && @target.is_a?(Array)
|
||||
unsaved_records = @target.select { |r| r.new_record? }
|
||||
unsaved_records = @target.reject { |r| r.persisted? }
|
||||
unsaved_records.size + count_records
|
||||
else
|
||||
count_records
|
||||
@@ -357,7 +357,7 @@ module ActiveRecord
|
||||
|
||||
def include?(record)
|
||||
return false unless record.is_a?(@reflection.klass)
|
||||
return include_in_memory?(record) if record.new_record?
|
||||
return include_in_memory?(record) unless record.persisted?
|
||||
load_target if @reflection.options[:finder_sql] && !loaded?
|
||||
return @target.include?(record) if loaded?
|
||||
exists?(record)
|
||||
@@ -372,7 +372,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def load_target
|
||||
if !@owner.new_record? || foreign_key_present
|
||||
if @owner.persisted? || foreign_key_present
|
||||
begin
|
||||
if !loaded?
|
||||
if @target.is_a?(Array) && @target.any?
|
||||
@@ -513,7 +513,7 @@ module ActiveRecord
|
||||
|
||||
transaction do
|
||||
records.each { |record| callback(:before_remove, record) }
|
||||
old_records = records.reject { |r| r.new_record? }
|
||||
old_records = records.select { |r| r.persisted? }
|
||||
yield(records, old_records)
|
||||
records.each { |record| callback(:after_remove, record) }
|
||||
end
|
||||
@@ -538,14 +538,15 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def ensure_owner_is_not_new
|
||||
if @owner.new_record?
|
||||
unless @owner.persisted?
|
||||
raise ActiveRecord::RecordNotSaved, "You cannot call create unless the parent is saved"
|
||||
end
|
||||
end
|
||||
|
||||
def fetch_first_or_last_using_find?(args)
|
||||
args.first.kind_of?(Hash) || !(loaded? || @owner.new_record? || @reflection.options[:finder_sql] ||
|
||||
@target.any? { |record| record.new_record? } || args.first.kind_of?(Integer))
|
||||
args.first.kind_of?(Hash) || !(loaded? || !@owner.persisted? || @reflection.options[:finder_sql] ||
|
||||
@target.any? { |record| !record.persisted? } || args.first.kind_of?(Integer))
|
||||
# TODO - would prefer @target.none? { |r| r.persisted? }
|
||||
end
|
||||
|
||||
def include_in_memory?(record)
|
||||
|
||||
@@ -175,10 +175,10 @@ module ActiveRecord
|
||||
# If the association is polymorphic the type of the owner is also set.
|
||||
def set_belongs_to_association_for(record)
|
||||
if @reflection.options[:as]
|
||||
record["#{@reflection.options[:as]}_id"] = @owner.id unless @owner.new_record?
|
||||
record["#{@reflection.options[:as]}_id"] = @owner.id if @owner.persisted?
|
||||
record["#{@reflection.options[:as]}_type"] = @owner.class.base_class.name.to_s
|
||||
else
|
||||
unless @owner.new_record?
|
||||
if @owner.persisted?
|
||||
primary_key = @reflection.options[:primary_key] || :id
|
||||
record[@reflection.primary_key_name] = @owner.send(primary_key)
|
||||
end
|
||||
@@ -252,7 +252,7 @@ module ActiveRecord
|
||||
def load_target
|
||||
return nil unless defined?(@loaded)
|
||||
|
||||
if !loaded? and (!@owner.new_record? || foreign_key_present)
|
||||
if !loaded? and (@owner.persisted? || foreign_key_present)
|
||||
@target = find_target
|
||||
end
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ module ActiveRecord
|
||||
counter_cache_name = @reflection.counter_cache_column
|
||||
|
||||
if record.nil?
|
||||
if counter_cache_name && !@owner.new_record?
|
||||
if counter_cache_name && @owner.persisted?
|
||||
@reflection.klass.decrement_counter(counter_cache_name, previous_record_id) if @owner[@reflection.primary_key_name]
|
||||
end
|
||||
|
||||
@@ -22,13 +22,13 @@ module ActiveRecord
|
||||
else
|
||||
raise_on_type_mismatch(record)
|
||||
|
||||
if counter_cache_name && !@owner.new_record? && record.id != @owner[@reflection.primary_key_name]
|
||||
if counter_cache_name && @owner.persisted? && record.id != @owner[@reflection.primary_key_name]
|
||||
@reflection.klass.increment_counter(counter_cache_name, record.id)
|
||||
@reflection.klass.decrement_counter(counter_cache_name, @owner[@reflection.primary_key_name]) if @owner[@reflection.primary_key_name]
|
||||
end
|
||||
|
||||
@target = (AssociationProxy === record ? record.target : record)
|
||||
@owner[@reflection.primary_key_name] = record_id(record) unless record.new_record?
|
||||
@owner[@reflection.primary_key_name] = record_id(record) if record.persisted?
|
||||
@updated = true
|
||||
end
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def insert_record(record, force = true, validate = true)
|
||||
if record.new_record?
|
||||
unless record.persisted?
|
||||
if force
|
||||
record.save!
|
||||
else
|
||||
|
||||
@@ -59,7 +59,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def insert_record(record, force = true, validate = true)
|
||||
if record.new_record?
|
||||
unless record.persisted?
|
||||
if force
|
||||
record.save!
|
||||
else
|
||||
|
||||
@@ -30,18 +30,18 @@ module ActiveRecord
|
||||
if dependent? && !dont_save
|
||||
case @reflection.options[:dependent]
|
||||
when :delete
|
||||
@target.delete unless @target.new_record?
|
||||
@target.delete if @target.persisted?
|
||||
@owner.clear_association_cache
|
||||
when :destroy
|
||||
@target.destroy unless @target.new_record?
|
||||
@target.destroy if @target.persisted?
|
||||
@owner.clear_association_cache
|
||||
when :nullify
|
||||
@target[@reflection.primary_key_name] = nil
|
||||
@target.save unless @owner.new_record? || @target.new_record?
|
||||
@target.save if @owner.persisted? && @target.persisted?
|
||||
end
|
||||
else
|
||||
@target[@reflection.primary_key_name] = nil
|
||||
@target.save unless @owner.new_record? || @target.new_record?
|
||||
@target.save if @owner.persisted? && @target.persisted?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -56,7 +56,7 @@ module ActiveRecord
|
||||
set_inverse_instance(obj, @owner)
|
||||
@loaded = true
|
||||
|
||||
unless @owner.new_record? or obj.nil? or dont_save
|
||||
unless !@owner.persisted? or obj.nil? or dont_save
|
||||
return (obj.save ? self : false)
|
||||
else
|
||||
return (obj.nil? ? nil : self)
|
||||
@@ -113,7 +113,7 @@ module ActiveRecord
|
||||
if replace_existing
|
||||
replace(record, true)
|
||||
else
|
||||
record[@reflection.primary_key_name] = @owner.id unless @owner.new_record?
|
||||
record[@reflection.primary_key_name] = @owner.id if @owner.persisted?
|
||||
self.target = record
|
||||
set_inverse_instance(record, @owner)
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ module ActiveRecord
|
||||
if current_object
|
||||
new_value ? current_object.update_attributes(construct_join_attributes(new_value)) : current_object.destroy
|
||||
elsif new_value
|
||||
if @owner.new_record?
|
||||
unless @owner.persisted?
|
||||
self.target = new_value
|
||||
through_association = @owner.send(:association_instance_get, @reflection.through_reflection.name)
|
||||
through_association.build(construct_join_attributes(new_value))
|
||||
|
||||
@@ -3,10 +3,11 @@ module ActiveRecord
|
||||
module PrimaryKey
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
# Returns this record's primary key value wrapped in an Array
|
||||
# or nil if the record is a new_record?
|
||||
# Returns this record's primary key value wrapped in an Array or nil if
|
||||
# the record is not persisted? or has just been destroyed.
|
||||
def to_key
|
||||
new_record? ? nil : [ id ]
|
||||
key = send(self.class.primary_key)
|
||||
[key] if key
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
|
||||
@@ -217,7 +217,7 @@ module ActiveRecord
|
||||
# Returns whether or not this record has been changed in any way (including whether
|
||||
# any of its nested autosave associations are likewise changed)
|
||||
def changed_for_autosave?
|
||||
new_record? || changed? || marked_for_destruction? || nested_records_changed_for_autosave?
|
||||
!persisted? || changed? || marked_for_destruction? || nested_records_changed_for_autosave?
|
||||
end
|
||||
|
||||
private
|
||||
@@ -231,7 +231,7 @@ module ActiveRecord
|
||||
elsif autosave
|
||||
association.target.find_all { |record| record.changed_for_autosave? }
|
||||
else
|
||||
association.target.find_all { |record| record.new_record? }
|
||||
association.target.find_all { |record| !record.persisted? }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -257,7 +257,7 @@ module ActiveRecord
|
||||
# +reflection+.
|
||||
def validate_collection_association(reflection)
|
||||
if association = association_instance_get(reflection.name)
|
||||
if records = associated_records_to_validate_or_save(association, new_record?, reflection.options[:autosave])
|
||||
if records = associated_records_to_validate_or_save(association, !persisted?, reflection.options[:autosave])
|
||||
records.each { |record| association_valid?(reflection, record) }
|
||||
end
|
||||
end
|
||||
@@ -286,7 +286,7 @@ module ActiveRecord
|
||||
# Is used as a before_save callback to check while saving a collection
|
||||
# association whether or not the parent was a new record before saving.
|
||||
def before_save_collection_association
|
||||
@new_record_before_save = new_record?
|
||||
@new_record_before_save = !persisted?
|
||||
true
|
||||
end
|
||||
|
||||
@@ -308,7 +308,7 @@ module ActiveRecord
|
||||
|
||||
if autosave && record.marked_for_destruction?
|
||||
association.destroy(record)
|
||||
elsif autosave != false && (@new_record_before_save || record.new_record?)
|
||||
elsif autosave != false && (@new_record_before_save || !record.persisted?)
|
||||
if autosave
|
||||
saved = association.send(:insert_record, record, false, false)
|
||||
else
|
||||
@@ -343,7 +343,7 @@ module ActiveRecord
|
||||
association.destroy
|
||||
else
|
||||
key = reflection.options[:primary_key] ? send(reflection.options[:primary_key]) : id
|
||||
if autosave != false && (new_record? || association.new_record? || association[reflection.primary_key_name] != key || autosave)
|
||||
if autosave != false && (!persisted? || !association.persisted? || association[reflection.primary_key_name] != key || autosave)
|
||||
association[reflection.primary_key_name] = key
|
||||
saved = association.save(:validate => !autosave)
|
||||
raise ActiveRecord::Rollback if !saved && autosave
|
||||
@@ -363,7 +363,7 @@ module ActiveRecord
|
||||
if autosave && association.marked_for_destruction?
|
||||
association.destroy
|
||||
elsif autosave != false
|
||||
saved = association.save(:validate => !autosave) if association.new_record? || autosave
|
||||
saved = association.save(:validate => !autosave) if !association.persisted? || autosave
|
||||
|
||||
if association.updated?
|
||||
association_id = association.send(reflection.options[:primary_key] || :id)
|
||||
|
||||
@@ -204,7 +204,7 @@ module ActiveRecord #:nodoc:
|
||||
#
|
||||
# # No 'Winter' tag exists
|
||||
# winter = Tag.find_or_initialize_by_name("Winter")
|
||||
# winter.new_record? # true
|
||||
# winter.persisted? # false
|
||||
#
|
||||
# To find by a subset of the attributes to be used for instantiating a new object, pass a hash instead of
|
||||
# a list of parameters.
|
||||
@@ -1368,7 +1368,7 @@ MSG
|
||||
def initialize(attributes = nil)
|
||||
@attributes = attributes_from_column_definition
|
||||
@attributes_cache = {}
|
||||
@new_record = true
|
||||
@persited = false
|
||||
@readonly = false
|
||||
@destroyed = false
|
||||
@marked_for_destruction = false
|
||||
@@ -1403,7 +1403,7 @@ MSG
|
||||
clear_aggregation_cache
|
||||
clear_association_cache
|
||||
@attributes_cache = {}
|
||||
@new_record = true
|
||||
@persisted = false
|
||||
ensure_proper_type
|
||||
|
||||
populate_with_current_scope_attributes
|
||||
@@ -1422,7 +1422,8 @@ MSG
|
||||
def init_with(coder)
|
||||
@attributes = coder['attributes']
|
||||
@attributes_cache, @previously_changed, @changed_attributes = {}, {}, {}
|
||||
@new_record = @readonly = @destroyed = @marked_for_destruction = false
|
||||
@readonly = @destroyed = @marked_for_destruction = false
|
||||
@persisted = true
|
||||
_run_find_callbacks
|
||||
_run_initialize_callbacks
|
||||
end
|
||||
@@ -1463,7 +1464,7 @@ MSG
|
||||
# Person.find(5).cache_key # => "people/5-20071224150000" (updated_at available)
|
||||
def cache_key
|
||||
case
|
||||
when new_record?
|
||||
when !persisted?
|
||||
"#{self.class.model_name.cache_key}/new"
|
||||
when timestamp = self[:updated_at]
|
||||
"#{self.class.model_name.cache_key}/#{id}-#{timestamp.to_s(:number)}"
|
||||
@@ -1584,8 +1585,9 @@ MSG
|
||||
# Returns true if the +comparison_object+ is the same object, or is of the same type and has the same id.
|
||||
def ==(comparison_object)
|
||||
comparison_object.equal?(self) ||
|
||||
(comparison_object.instance_of?(self.class) &&
|
||||
comparison_object.id == id && !comparison_object.new_record?)
|
||||
persisted? &&
|
||||
(comparison_object.instance_of?(self.class) &&
|
||||
comparison_object.id == id)
|
||||
end
|
||||
|
||||
# Delegates to ==
|
||||
@@ -1630,7 +1632,7 @@ MSG
|
||||
# Returns the contents of the record as a nicely formatted string.
|
||||
def inspect
|
||||
attributes_as_nice_string = self.class.column_names.collect { |name|
|
||||
if has_attribute?(name) || new_record?
|
||||
if has_attribute?(name) || !persisted?
|
||||
"#{name}: #{attribute_for_inspect(name)}"
|
||||
end
|
||||
}.compact.join(", ")
|
||||
|
||||
@@ -109,7 +109,7 @@ module ActiveRecord
|
||||
def destroy #:nodoc:
|
||||
return super unless locking_enabled?
|
||||
|
||||
unless new_record?
|
||||
if persisted?
|
||||
lock_col = self.class.locking_column
|
||||
previous_value = send(lock_col).to_i
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ module ActiveRecord
|
||||
# or pass true for "FOR UPDATE" (the default, an exclusive row lock). Returns
|
||||
# the locked record.
|
||||
def lock!(lock = true)
|
||||
reload(:lock => lock) unless new_record?
|
||||
reload(:lock => lock) if persisted?
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,7 +4,8 @@ module ActiveRecord
|
||||
# Returns true if this object hasn't been saved yet -- that is, a record
|
||||
# for the object doesn't exist in the data store yet; otherwise, returns false.
|
||||
def new_record?
|
||||
@new_record
|
||||
@persisted = false unless defined?(@persisted)
|
||||
!@persisted
|
||||
end
|
||||
|
||||
# Returns true if this object has been destroyed, otherwise returns false.
|
||||
@@ -15,7 +16,8 @@ module ActiveRecord
|
||||
# Returns if the record is persisted, i.e. it's not a new record and it was
|
||||
# not destroyed.
|
||||
def persisted?
|
||||
!(new_record? || destroyed?)
|
||||
@persisted = false unless defined?(@persisted)
|
||||
!!@persisted && !destroyed?
|
||||
end
|
||||
|
||||
# Saves the model.
|
||||
@@ -94,7 +96,7 @@ module ActiveRecord
|
||||
became = klass.new
|
||||
became.instance_variable_set("@attributes", @attributes)
|
||||
became.instance_variable_set("@attributes_cache", @attributes_cache)
|
||||
became.instance_variable_set("@new_record", new_record?)
|
||||
became.instance_variable_set("@persisted", persisted?)
|
||||
became.instance_variable_set("@destroyed", destroyed?)
|
||||
became
|
||||
end
|
||||
@@ -240,7 +242,7 @@ module ActiveRecord
|
||||
private
|
||||
def create_or_update
|
||||
raise ReadOnlyRecord if readonly?
|
||||
result = new_record? ? create : update
|
||||
result = persisted? ? update : create
|
||||
result != false
|
||||
end
|
||||
|
||||
@@ -269,7 +271,7 @@ module ActiveRecord
|
||||
|
||||
self.id ||= new_id
|
||||
|
||||
@new_record = false
|
||||
@persisted = true
|
||||
id
|
||||
end
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ module ActiveRecord
|
||||
@session_id = attributes[:session_id]
|
||||
@data = attributes[:data]
|
||||
@marshaled_data = attributes[:marshaled_data]
|
||||
@new_record = @marshaled_data.nil?
|
||||
@persisted = !@marshaled_data.nil?
|
||||
end
|
||||
|
||||
# Lazy-unmarshal session state.
|
||||
@@ -252,8 +252,8 @@ module ActiveRecord
|
||||
marshaled_data = self.class.marshal(data)
|
||||
connect = connection
|
||||
|
||||
if @new_record
|
||||
@new_record = false
|
||||
unless @persisted
|
||||
@persisted = true
|
||||
connect.update <<-end_sql, 'Create session'
|
||||
INSERT INTO #{table_name} (
|
||||
#{connect.quote_column_name(session_id_column)},
|
||||
@@ -272,7 +272,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def destroy
|
||||
return if @new_record
|
||||
return unless @persisted
|
||||
|
||||
connect = connection
|
||||
connect.delete <<-end_sql, 'Destroy session'
|
||||
|
||||
@@ -242,7 +242,7 @@ module ActiveRecord
|
||||
with_transaction_returning_status { super }
|
||||
end
|
||||
|
||||
# Reset id and @new_record if the transaction rolls back.
|
||||
# Reset id and @persisted if the transaction rolls back.
|
||||
def rollback_active_record_state!
|
||||
remember_transaction_record_state
|
||||
yield
|
||||
@@ -297,9 +297,10 @@ module ActiveRecord
|
||||
# Save the new record state and id of a record so it can be restored later if a transaction fails.
|
||||
def remember_transaction_record_state #:nodoc
|
||||
@_start_transaction_state ||= {}
|
||||
unless @_start_transaction_state.include?(:new_record)
|
||||
unless @_start_transaction_state.include?(:persisted)
|
||||
@_start_transaction_state[:id] = id if has_attribute?(self.class.primary_key)
|
||||
@_start_transaction_state[:new_record] = @new_record
|
||||
@persisted = false unless defined?(@persisted)
|
||||
@_start_transaction_state[:persisted] = @persisted
|
||||
end
|
||||
unless @_start_transaction_state.include?(:destroyed)
|
||||
@_start_transaction_state[:destroyed] = @destroyed
|
||||
@@ -323,7 +324,7 @@ module ActiveRecord
|
||||
restore_state = remove_instance_variable(:@_start_transaction_state)
|
||||
if restore_state
|
||||
@attributes = @attributes.dup if @attributes.frozen?
|
||||
@new_record = restore_state[:new_record]
|
||||
@persisted = restore_state[:persisted]
|
||||
@destroyed = restore_state[:destroyed]
|
||||
if restore_state[:id]
|
||||
self.id = restore_state[:id]
|
||||
@@ -345,11 +346,11 @@ module ActiveRecord
|
||||
def transaction_include_action?(action) #:nodoc
|
||||
case action
|
||||
when :create
|
||||
transaction_record_state(:new_record)
|
||||
transaction_record_state(:new_record) || !transaction_record_state(:persisted)
|
||||
when :destroy
|
||||
destroyed?
|
||||
when :update
|
||||
!(transaction_record_state(:new_record) || destroyed?)
|
||||
!(transaction_record_state(:new_record) || !transaction_record_state(:persisted) || destroyed?)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -51,7 +51,7 @@ module ActiveRecord
|
||||
|
||||
# Runs all the specified validations and returns true if no errors were added otherwise false.
|
||||
def valid?(context = nil)
|
||||
context ||= (new_record? ? :create : :update)
|
||||
context ||= (persisted? ? :update : :create)
|
||||
output = super(context)
|
||||
errors.empty? && output
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ module ActiveRecord
|
||||
relation = relation.where(scope_item => scope_value)
|
||||
end
|
||||
|
||||
unless record.new_record?
|
||||
if record.persisted?
|
||||
# TODO : This should be in Arel
|
||||
relation = relation.where("#{record.class.quoted_table_name}.#{record.class.primary_key} <> ?", record.send(:id))
|
||||
end
|
||||
|
||||
@@ -285,10 +285,10 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
||||
final_cut = Client.new("name" => "Final Cut")
|
||||
firm = Firm.find(1)
|
||||
final_cut.firm = firm
|
||||
assert final_cut.new_record?
|
||||
assert !final_cut.persisted?
|
||||
assert final_cut.save
|
||||
assert !final_cut.new_record?
|
||||
assert !firm.new_record?
|
||||
assert final_cut.persisted?
|
||||
assert firm.persisted?
|
||||
assert_equal firm, final_cut.firm
|
||||
assert_equal firm, final_cut.firm(true)
|
||||
end
|
||||
@@ -297,10 +297,10 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
||||
final_cut = Client.new("name" => "Final Cut")
|
||||
firm = Firm.find(1)
|
||||
final_cut.firm_with_primary_key = firm
|
||||
assert final_cut.new_record?
|
||||
assert !final_cut.persisted?
|
||||
assert final_cut.save
|
||||
assert !final_cut.new_record?
|
||||
assert !firm.new_record?
|
||||
assert final_cut.persisted?
|
||||
assert firm.persisted?
|
||||
assert_equal firm, final_cut.firm_with_primary_key
|
||||
assert_equal firm, final_cut.firm_with_primary_key(true)
|
||||
end
|
||||
|
||||
@@ -251,10 +251,10 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
||||
no_of_projects = Project.count
|
||||
aredridel = Developer.new("name" => "Aredridel")
|
||||
aredridel.projects.concat([Project.find(1), p = Project.new("name" => "Projekt")])
|
||||
assert aredridel.new_record?
|
||||
assert p.new_record?
|
||||
assert !aredridel.persisted?
|
||||
assert !p.persisted?
|
||||
assert aredridel.save
|
||||
assert !aredridel.new_record?
|
||||
assert aredridel.persisted?
|
||||
assert_equal no_of_devels+1, Developer.count
|
||||
assert_equal no_of_projects+1, Project.count
|
||||
assert_equal 2, aredridel.projects.size
|
||||
@@ -288,9 +288,9 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
||||
assert_equal devel.projects.last, proj
|
||||
assert devel.projects.loaded?
|
||||
|
||||
assert proj.new_record?
|
||||
assert !proj.persisted?
|
||||
devel.save
|
||||
assert !proj.new_record?
|
||||
assert proj.persisted?
|
||||
assert_equal devel.projects.last, proj
|
||||
assert_equal Developer.find(1).projects.sort_by(&:id).last, proj # prove join table is updated
|
||||
end
|
||||
@@ -300,10 +300,10 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
||||
proj1 = devel.projects.build(:name => "Make bed")
|
||||
proj2 = devel.projects.build(:name => "Lie in it")
|
||||
assert_equal devel.projects.last, proj2
|
||||
assert proj2.new_record?
|
||||
assert !proj2.persisted?
|
||||
devel.save
|
||||
assert !devel.new_record?
|
||||
assert !proj2.new_record?
|
||||
assert devel.persisted?
|
||||
assert proj2.persisted?
|
||||
assert_equal devel.projects.last, proj2
|
||||
assert_equal Developer.find_by_name("Marcel").projects.last, proj2 # prove join table is updated
|
||||
end
|
||||
@@ -316,7 +316,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
||||
assert_equal devel.projects.last, proj
|
||||
assert !devel.projects.loaded?
|
||||
|
||||
assert !proj.new_record?
|
||||
assert proj.persisted?
|
||||
assert_equal Developer.find(1).projects.sort_by(&:id).last, proj # prove join table is updated
|
||||
end
|
||||
|
||||
@@ -325,10 +325,10 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
||||
proj1 = devel.projects.build(:name => "Make bed")
|
||||
proj2 = devel.projects.build(:name => "Lie in it")
|
||||
assert_equal devel.projects.last, proj2
|
||||
assert proj2.new_record?
|
||||
assert !proj2.persisted?
|
||||
devel.save
|
||||
assert !devel.new_record?
|
||||
assert !proj2.new_record?
|
||||
assert devel.persisted?
|
||||
assert proj2.persisted?
|
||||
assert_equal devel.projects.last, proj2
|
||||
assert_equal Developer.find_by_name("Marcel").projects.last, proj2 # prove join table is updated
|
||||
end
|
||||
@@ -343,7 +343,7 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
||||
# in Oracle '' is saved as null therefore need to save ' ' in not null column
|
||||
another_post = categories(:general).post_with_conditions.create(:body => ' ')
|
||||
|
||||
assert !another_post.new_record?
|
||||
assert another_post.persisted?
|
||||
assert_equal 'Yet Another Testing Title', another_post.title
|
||||
end
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||
another = author.posts.find_or_create_by_title_and_body("Another Post", "This is the Body")
|
||||
assert_equal number_of_posts + 1, Post.count
|
||||
assert_equal another, author.posts.find_or_create_by_title_and_body("Another Post", "This is the Body")
|
||||
assert !another.new_record?
|
||||
assert another.persisted?
|
||||
end
|
||||
|
||||
def test_cant_save_has_many_readonly_association
|
||||
@@ -453,7 +453,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||
assert !company.clients_of_firm.loaded?
|
||||
|
||||
assert_equal "Another Client", new_client.name
|
||||
assert new_client.new_record?
|
||||
assert !new_client.persisted?
|
||||
assert_equal new_client, company.clients_of_firm.last
|
||||
end
|
||||
|
||||
@@ -508,7 +508,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||
assert !company.clients_of_firm.loaded?
|
||||
|
||||
assert_equal "Another Client", new_client.name
|
||||
assert new_client.new_record?
|
||||
assert !new_client.persisted?
|
||||
assert_equal new_client, company.clients_of_firm.last
|
||||
end
|
||||
|
||||
@@ -543,7 +543,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||
def test_create
|
||||
force_signal37_to_load_all_clients_of_firm
|
||||
new_client = companies(:first_firm).clients_of_firm.create("name" => "Another Client")
|
||||
assert !new_client.new_record?
|
||||
assert new_client.persisted?
|
||||
assert_equal new_client, companies(:first_firm).clients_of_firm.last
|
||||
assert_equal new_client, companies(:first_firm).clients_of_firm(true).last
|
||||
end
|
||||
@@ -563,7 +563,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||
the_client = companies(:first_firm).clients.find_or_initialize_by_name("Yet another client")
|
||||
assert_equal companies(:first_firm).id, the_client.firm_id
|
||||
assert_equal "Yet another client", the_client.name
|
||||
assert the_client.new_record?
|
||||
assert !the_client.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_updates_size
|
||||
@@ -752,7 +752,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||
|
||||
another_ms_client = companies(:first_firm).clients_like_ms_with_hash_conditions.create
|
||||
|
||||
assert !another_ms_client.new_record?
|
||||
assert another_ms_client.persisted?
|
||||
assert_equal 'Microsoft', another_ms_client.name
|
||||
end
|
||||
|
||||
|
||||
@@ -268,7 +268,7 @@ class HasOneAssociationsTest < ActiveRecord::TestCase
|
||||
def test_assignment_before_child_saved
|
||||
firm = Firm.find(1)
|
||||
firm.account = a = Account.new("credit_limit" => 1000)
|
||||
assert !a.new_record?
|
||||
assert a.persisted?
|
||||
assert_equal a, firm.account
|
||||
assert_equal a, firm.account
|
||||
assert_equal a, firm.account(true)
|
||||
@@ -323,7 +323,7 @@ class HasOneAssociationsTest < ActiveRecord::TestCase
|
||||
|
||||
def test_create_respects_hash_condition
|
||||
account = companies(:first_firm).create_account_limit_500_with_hash_conditions
|
||||
assert !account.new_record?
|
||||
assert account.persisted?
|
||||
assert_equal 500, account.credit_limit
|
||||
end
|
||||
|
||||
|
||||
@@ -450,11 +450,11 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
|
||||
new_tag = Tag.new(:name => "new")
|
||||
|
||||
saved_post.tags << new_tag
|
||||
assert !new_tag.new_record? #consistent with habtm!
|
||||
assert !saved_post.new_record?
|
||||
assert new_tag.persisted? #consistent with habtm!
|
||||
assert saved_post.persisted?
|
||||
assert saved_post.tags.include?(new_tag)
|
||||
|
||||
assert !new_tag.new_record?
|
||||
assert new_tag.persisted?
|
||||
assert saved_post.reload.tags(true).include?(new_tag)
|
||||
|
||||
|
||||
@@ -462,16 +462,16 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
|
||||
saved_tag = tags(:general)
|
||||
|
||||
new_post.tags << saved_tag
|
||||
assert new_post.new_record?
|
||||
assert !saved_tag.new_record?
|
||||
assert !new_post.persisted?
|
||||
assert saved_tag.persisted?
|
||||
assert new_post.tags.include?(saved_tag)
|
||||
|
||||
new_post.save!
|
||||
assert !new_post.new_record?
|
||||
assert new_post.persisted?
|
||||
assert new_post.reload.tags(true).include?(saved_tag)
|
||||
|
||||
assert posts(:thinking).tags.build.new_record?
|
||||
assert posts(:thinking).tags.new.new_record?
|
||||
assert !posts(:thinking).tags.build.persisted?
|
||||
assert !posts(:thinking).tags.new.persisted?
|
||||
end
|
||||
|
||||
def test_create_associate_when_adding_to_has_many_through
|
||||
|
||||
@@ -83,7 +83,7 @@ class TestDefaultAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCas
|
||||
assert !firm.build_account_using_primary_key.valid?
|
||||
|
||||
assert firm.save
|
||||
assert firm.account_using_primary_key.new_record?
|
||||
assert !firm.account_using_primary_key.persisted?
|
||||
end
|
||||
|
||||
def test_save_fails_for_invalid_has_one
|
||||
@@ -114,10 +114,10 @@ class TestDefaultAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCas
|
||||
|
||||
account = firm.account.build("credit_limit" => 1000)
|
||||
assert_equal account, firm.account
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
assert firm.save
|
||||
assert_equal account, firm.account
|
||||
assert !account.new_record?
|
||||
assert account.persisted?
|
||||
end
|
||||
|
||||
def test_build_before_either_saved
|
||||
@@ -125,16 +125,16 @@ class TestDefaultAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCas
|
||||
|
||||
firm.account = account = Account.new("credit_limit" => 1000)
|
||||
assert_equal account, firm.account
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
assert firm.save
|
||||
assert_equal account, firm.account
|
||||
assert !account.new_record?
|
||||
assert account.persisted?
|
||||
end
|
||||
|
||||
def test_assignment_before_parent_saved
|
||||
firm = Firm.new("name" => "GlobalMegaCorp")
|
||||
firm.account = a = Account.find(1)
|
||||
assert firm.new_record?
|
||||
assert !firm.persisted?
|
||||
assert_equal a, firm.account
|
||||
assert firm.save
|
||||
assert_equal a, firm.account
|
||||
@@ -144,12 +144,12 @@ class TestDefaultAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCas
|
||||
def test_assignment_before_either_saved
|
||||
firm = Firm.new("name" => "GlobalMegaCorp")
|
||||
firm.account = a = Account.new("credit_limit" => 1000)
|
||||
assert firm.new_record?
|
||||
assert a.new_record?
|
||||
assert !firm.persisted?
|
||||
assert !a.persisted?
|
||||
assert_equal a, firm.account
|
||||
assert firm.save
|
||||
assert !firm.new_record?
|
||||
assert !a.new_record?
|
||||
assert firm.persisted?
|
||||
assert a.persisted?
|
||||
assert_equal a, firm.account
|
||||
assert_equal a, firm.account(true)
|
||||
end
|
||||
@@ -203,7 +203,7 @@ class TestDefaultAutosaveAssociationOnABelongsToAssociation < ActiveRecord::Test
|
||||
assert !client.firm.valid?
|
||||
|
||||
assert client.save
|
||||
assert client.firm.new_record?
|
||||
assert !client.firm.persisted?
|
||||
end
|
||||
|
||||
def test_save_fails_for_invalid_belongs_to
|
||||
@@ -232,10 +232,10 @@ class TestDefaultAutosaveAssociationOnABelongsToAssociation < ActiveRecord::Test
|
||||
apple = Firm.new("name" => "Apple")
|
||||
client.firm = apple
|
||||
assert_equal apple, client.firm
|
||||
assert apple.new_record?
|
||||
assert !apple.persisted?
|
||||
assert client.save
|
||||
assert apple.save
|
||||
assert !apple.new_record?
|
||||
assert apple.persisted?
|
||||
assert_equal apple, client.firm
|
||||
assert_equal apple, client.firm(true)
|
||||
end
|
||||
@@ -244,11 +244,11 @@ class TestDefaultAutosaveAssociationOnABelongsToAssociation < ActiveRecord::Test
|
||||
final_cut = Client.new("name" => "Final Cut")
|
||||
apple = Firm.new("name" => "Apple")
|
||||
final_cut.firm = apple
|
||||
assert final_cut.new_record?
|
||||
assert apple.new_record?
|
||||
assert !final_cut.persisted?
|
||||
assert !apple.persisted?
|
||||
assert final_cut.save
|
||||
assert !final_cut.new_record?
|
||||
assert !apple.new_record?
|
||||
assert final_cut.persisted?
|
||||
assert apple.persisted?
|
||||
assert_equal apple, final_cut.firm
|
||||
assert_equal apple, final_cut.firm(true)
|
||||
end
|
||||
@@ -348,10 +348,10 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
def test_invalid_adding
|
||||
firm = Firm.find(1)
|
||||
assert !(firm.clients_of_firm << c = Client.new)
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
assert !firm.valid?
|
||||
assert !firm.save
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
end
|
||||
|
||||
def test_invalid_adding_before_save
|
||||
@@ -359,12 +359,12 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
no_of_clients = Client.count
|
||||
new_firm = Firm.new("name" => "A New Firm, Inc")
|
||||
new_firm.clients_of_firm.concat([c = Client.new, Client.new("name" => "Apple")])
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
assert !c.valid?
|
||||
assert !new_firm.valid?
|
||||
assert !new_firm.save
|
||||
assert c.new_record?
|
||||
assert new_firm.new_record?
|
||||
assert !c.persisted?
|
||||
assert !new_firm.persisted?
|
||||
end
|
||||
|
||||
def test_invalid_adding_with_validate_false
|
||||
@@ -375,7 +375,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
assert firm.valid?
|
||||
assert !client.valid?
|
||||
assert firm.save
|
||||
assert client.new_record?
|
||||
assert !client.persisted?
|
||||
end
|
||||
|
||||
def test_valid_adding_with_validate_false
|
||||
@@ -386,22 +386,22 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
|
||||
assert firm.valid?
|
||||
assert client.valid?
|
||||
assert client.new_record?
|
||||
assert !client.persisted?
|
||||
|
||||
firm.unvalidated_clients_of_firm << client
|
||||
|
||||
assert firm.save
|
||||
assert !client.new_record?
|
||||
assert client.persisted?
|
||||
assert_equal no_of_clients + 1, Client.count
|
||||
end
|
||||
|
||||
def test_invalid_build
|
||||
new_client = companies(:first_firm).clients_of_firm.build
|
||||
assert new_client.new_record?
|
||||
assert !new_client.persisted?
|
||||
assert !new_client.valid?
|
||||
assert_equal new_client, companies(:first_firm).clients_of_firm.last
|
||||
assert !companies(:first_firm).save
|
||||
assert new_client.new_record?
|
||||
assert !new_client.persisted?
|
||||
assert_equal 1, companies(:first_firm).clients_of_firm(true).size
|
||||
end
|
||||
|
||||
@@ -420,8 +420,8 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
assert_equal no_of_firms, Firm.count # Firm was not saved to database.
|
||||
assert_equal no_of_clients, Client.count # Clients were not saved to database.
|
||||
assert new_firm.save
|
||||
assert !new_firm.new_record?
|
||||
assert !c.new_record?
|
||||
assert new_firm.persisted?
|
||||
assert c.persisted?
|
||||
assert_equal new_firm, c.firm
|
||||
assert_equal no_of_firms + 1, Firm.count # Firm was saved to database.
|
||||
assert_equal no_of_clients + 2, Client.count # Clients were saved to database.
|
||||
@@ -455,7 +455,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
|
||||
company.name += '-changed'
|
||||
assert_queries(2) { assert company.save }
|
||||
assert !new_client.new_record?
|
||||
assert new_client.persisted?
|
||||
assert_equal 2, company.clients_of_firm(true).size
|
||||
end
|
||||
|
||||
@@ -475,7 +475,7 @@ class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCa
|
||||
|
||||
company.name += '-changed'
|
||||
assert_queries(2) { assert company.save }
|
||||
assert !new_client.new_record?
|
||||
assert new_client.persisted?
|
||||
assert_equal 2, company.clients_of_firm(true).size
|
||||
end
|
||||
|
||||
@@ -507,62 +507,62 @@ class TestDefaultAutosaveAssociationOnNewRecord < ActiveRecord::TestCase
|
||||
new_account = Account.new("credit_limit" => 1000)
|
||||
new_firm = Firm.new("name" => "some firm")
|
||||
|
||||
assert new_firm.new_record?
|
||||
assert !new_firm.persisted?
|
||||
new_account.firm = new_firm
|
||||
new_account.save!
|
||||
|
||||
assert !new_firm.new_record?
|
||||
assert new_firm.persisted?
|
||||
|
||||
new_account = Account.new("credit_limit" => 1000)
|
||||
new_autosaved_firm = Firm.new("name" => "some firm")
|
||||
|
||||
assert new_autosaved_firm.new_record?
|
||||
assert !new_autosaved_firm.persisted?
|
||||
new_account.unautosaved_firm = new_autosaved_firm
|
||||
new_account.save!
|
||||
|
||||
assert new_autosaved_firm.new_record?
|
||||
assert !new_autosaved_firm.persisted?
|
||||
end
|
||||
|
||||
def test_autosave_new_record_on_has_one_can_be_disabled_per_relationship
|
||||
firm = Firm.new("name" => "some firm")
|
||||
account = Account.new("credit_limit" => 1000)
|
||||
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
firm.account = account
|
||||
firm.save!
|
||||
|
||||
assert !account.new_record?
|
||||
assert account.persisted?
|
||||
|
||||
firm = Firm.new("name" => "some firm")
|
||||
account = Account.new("credit_limit" => 1000)
|
||||
|
||||
firm.unautosaved_account = account
|
||||
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
firm.unautosaved_account = account
|
||||
firm.save!
|
||||
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
end
|
||||
|
||||
def test_autosave_new_record_on_has_many_can_be_disabled_per_relationship
|
||||
firm = Firm.new("name" => "some firm")
|
||||
account = Account.new("credit_limit" => 1000)
|
||||
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
firm.accounts << account
|
||||
|
||||
firm.save!
|
||||
assert !account.new_record?
|
||||
assert account.persisted?
|
||||
|
||||
firm = Firm.new("name" => "some firm")
|
||||
account = Account.new("credit_limit" => 1000)
|
||||
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
firm.unautosaved_accounts << account
|
||||
|
||||
firm.save!
|
||||
assert account.new_record?
|
||||
assert !account.persisted?
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -656,8 +656,8 @@ class BasicsTest < ActiveRecord::TestCase
|
||||
end
|
||||
|
||||
def test_new_record_returns_boolean
|
||||
assert_equal true, Topic.new.new_record?
|
||||
assert_equal false, Topic.find(1).new_record?
|
||||
assert_equal false, Topic.new.persisted?
|
||||
assert_equal true, Topic.find(1).persisted?
|
||||
end
|
||||
|
||||
def test_clone
|
||||
@@ -665,7 +665,7 @@ class BasicsTest < ActiveRecord::TestCase
|
||||
cloned_topic = nil
|
||||
assert_nothing_raised { cloned_topic = topic.clone }
|
||||
assert_equal topic.title, cloned_topic.title
|
||||
assert cloned_topic.new_record?
|
||||
assert !cloned_topic.persisted?
|
||||
|
||||
# test if the attributes have been cloned
|
||||
topic.title = "a"
|
||||
@@ -684,7 +684,7 @@ class BasicsTest < ActiveRecord::TestCase
|
||||
|
||||
# test if saved clone object differs from original
|
||||
cloned_topic.save
|
||||
assert !cloned_topic.new_record?
|
||||
assert cloned_topic.persisted?
|
||||
assert_not_equal cloned_topic.id, topic.id
|
||||
|
||||
cloned_topic.reload
|
||||
@@ -700,7 +700,7 @@ class BasicsTest < ActiveRecord::TestCase
|
||||
assert_nothing_raised { clone = dev.clone }
|
||||
assert_kind_of DeveloperSalary, clone.salary
|
||||
assert_equal dev.salary.amount, clone.salary.amount
|
||||
assert clone.new_record?
|
||||
assert !clone.persisted?
|
||||
|
||||
# test if the attributes have been cloned
|
||||
original_amount = clone.salary.amount
|
||||
@@ -708,7 +708,7 @@ class BasicsTest < ActiveRecord::TestCase
|
||||
assert_equal original_amount, clone.salary.amount
|
||||
|
||||
assert clone.save
|
||||
assert !clone.new_record?
|
||||
assert clone.persisted?
|
||||
assert_not_equal clone.id, dev.id
|
||||
end
|
||||
|
||||
|
||||
@@ -726,7 +726,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
sig38 = Company.find_or_create_by_name("38signals")
|
||||
assert_equal number_of_companies + 1, Company.count
|
||||
assert_equal sig38, Company.find_or_create_by_name("38signals")
|
||||
assert !sig38.new_record?
|
||||
assert sig38.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_two_attributes
|
||||
@@ -734,7 +734,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
another = Topic.find_or_create_by_title_and_author_name("Another topic","John")
|
||||
assert_equal number_of_topics + 1, Topic.count
|
||||
assert_equal another, Topic.find_or_create_by_title_and_author_name("Another topic", "John")
|
||||
assert !another.new_record?
|
||||
assert another.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_two_attributes_with_one_being_an_aggregate
|
||||
@@ -742,7 +742,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
created_customer = Customer.find_or_create_by_balance_and_name(Money.new(123), "Elizabeth")
|
||||
assert_equal number_of_customers + 1, Customer.count
|
||||
assert_equal created_customer, Customer.find_or_create_by_balance(Money.new(123), "Elizabeth")
|
||||
assert !created_customer.new_record?
|
||||
assert created_customer.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_one_attribute_and_hash
|
||||
@@ -750,7 +750,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
sig38 = Company.find_or_create_by_name({:name => "38signals", :firm_id => 17, :client_of => 23})
|
||||
assert_equal number_of_companies + 1, Company.count
|
||||
assert_equal sig38, Company.find_or_create_by_name({:name => "38signals", :firm_id => 17, :client_of => 23})
|
||||
assert !sig38.new_record?
|
||||
assert sig38.persisted?
|
||||
assert_equal "38signals", sig38.name
|
||||
assert_equal 17, sig38.firm_id
|
||||
assert_equal 23, sig38.client_of
|
||||
@@ -761,7 +761,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
created_customer = Customer.find_or_create_by_balance(Money.new(123))
|
||||
assert_equal number_of_customers + 1, Customer.count
|
||||
assert_equal created_customer, Customer.find_or_create_by_balance(Money.new(123))
|
||||
assert !created_customer.new_record?
|
||||
assert created_customer.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_one_aggregate_attribute_and_hash
|
||||
@@ -771,7 +771,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
created_customer = Customer.find_or_create_by_balance({:balance => balance, :name => name})
|
||||
assert_equal number_of_customers + 1, Customer.count
|
||||
assert_equal created_customer, Customer.find_or_create_by_balance({:balance => balance, :name => name})
|
||||
assert !created_customer.new_record?
|
||||
assert created_customer.persisted?
|
||||
assert_equal balance, created_customer.balance
|
||||
assert_equal name, created_customer.name
|
||||
end
|
||||
@@ -779,13 +779,13 @@ class FinderTest < ActiveRecord::TestCase
|
||||
def test_find_or_initialize_from_one_attribute
|
||||
sig38 = Company.find_or_initialize_by_name("38signals")
|
||||
assert_equal "38signals", sig38.name
|
||||
assert sig38.new_record?
|
||||
assert !sig38.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_aggregate_attribute
|
||||
new_customer = Customer.find_or_initialize_by_balance(Money.new(123))
|
||||
assert_equal 123, new_customer.balance.amount
|
||||
assert new_customer.new_record?
|
||||
assert !new_customer.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_attribute_should_not_set_attribute_even_when_protected
|
||||
@@ -793,7 +793,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_not_equal 1000, c.rating
|
||||
assert c.valid?
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_one_attribute_should_not_set_attribute_even_when_protected
|
||||
@@ -801,7 +801,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_not_equal 1000, c.rating
|
||||
assert c.valid?
|
||||
assert !c.new_record?
|
||||
assert c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_attribute_should_set_attribute_even_when_protected
|
||||
@@ -809,7 +809,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000, c.rating
|
||||
assert c.valid?
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_one_attribute_should_set_attribute_even_when_protected
|
||||
@@ -817,7 +817,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000, c.rating
|
||||
assert c.valid?
|
||||
assert !c.new_record?
|
||||
assert c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_attribute_should_set_attribute_even_when_protected_and_also_set_the_hash
|
||||
@@ -825,7 +825,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000, c.rating
|
||||
assert c.valid?
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_from_one_attribute_should_set_attribute_even_when_protected_and_also_set_the_hash
|
||||
@@ -833,7 +833,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000, c.rating
|
||||
assert c.valid?
|
||||
assert !c.new_record?
|
||||
assert c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_should_set_protected_attributes_if_given_as_block
|
||||
@@ -841,7 +841,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000.to_f, c.rating.to_f
|
||||
assert c.valid?
|
||||
assert c.new_record?
|
||||
assert !c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_should_set_protected_attributes_if_given_as_block
|
||||
@@ -849,7 +849,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000.to_f, c.rating.to_f
|
||||
assert c.valid?
|
||||
assert !c.new_record?
|
||||
assert c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_create_should_work_with_block_on_first_call
|
||||
@@ -860,21 +860,21 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "Fortune 1000", c.name
|
||||
assert_equal 1000.to_f, c.rating.to_f
|
||||
assert c.valid?
|
||||
assert !c.new_record?
|
||||
assert c.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_two_attributes
|
||||
another = Topic.find_or_initialize_by_title_and_author_name("Another topic","John")
|
||||
assert_equal "Another topic", another.title
|
||||
assert_equal "John", another.author_name
|
||||
assert another.new_record?
|
||||
assert !another.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_aggregate_attribute_and_one_not
|
||||
new_customer = Customer.find_or_initialize_by_balance_and_name(Money.new(123), "Elizabeth")
|
||||
assert_equal 123, new_customer.balance.amount
|
||||
assert_equal "Elizabeth", new_customer.name
|
||||
assert new_customer.new_record?
|
||||
assert !new_customer.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_attribute_and_hash
|
||||
@@ -882,7 +882,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
assert_equal "38signals", sig38.name
|
||||
assert_equal 17, sig38.firm_id
|
||||
assert_equal 23, sig38.client_of
|
||||
assert sig38.new_record?
|
||||
assert !sig38.persisted?
|
||||
end
|
||||
|
||||
def test_find_or_initialize_from_one_aggregate_attribute_and_hash
|
||||
@@ -891,7 +891,7 @@ class FinderTest < ActiveRecord::TestCase
|
||||
new_customer = Customer.find_or_initialize_by_balance({:balance => balance, :name => name})
|
||||
assert_equal balance, new_customer.balance
|
||||
assert_equal name, new_customer.name
|
||||
assert new_customer.new_record?
|
||||
assert !new_customer.persisted?
|
||||
end
|
||||
|
||||
def test_find_with_bad_sql
|
||||
|
||||
@@ -163,7 +163,7 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
|
||||
@ship.destroy
|
||||
@pirate.reload.ship_attributes = { :name => 'Davy Jones Gold Dagger' }
|
||||
|
||||
assert @pirate.ship.new_record?
|
||||
assert !@pirate.ship.persisted?
|
||||
assert_equal 'Davy Jones Gold Dagger', @pirate.ship.name
|
||||
end
|
||||
|
||||
@@ -184,7 +184,7 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
|
||||
def test_should_replace_an_existing_record_if_there_is_no_id
|
||||
@pirate.reload.ship_attributes = { :name => 'Davy Jones Gold Dagger' }
|
||||
|
||||
assert @pirate.ship.new_record?
|
||||
assert !@pirate.ship.persisted?
|
||||
assert_equal 'Davy Jones Gold Dagger', @pirate.ship.name
|
||||
assert_equal 'Nights Dirty Lightning', @ship.name
|
||||
end
|
||||
@@ -256,7 +256,7 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
|
||||
def test_should_also_work_with_a_HashWithIndifferentAccess
|
||||
@pirate.ship_attributes = HashWithIndifferentAccess.new(:id => @ship.id, :name => 'Davy Jones Gold Dagger')
|
||||
|
||||
assert !@pirate.ship.new_record?
|
||||
assert @pirate.ship.persisted?
|
||||
assert_equal 'Davy Jones Gold Dagger', @pirate.ship.name
|
||||
end
|
||||
|
||||
@@ -348,7 +348,7 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
|
||||
@pirate.destroy
|
||||
@ship.reload.pirate_attributes = { :catchphrase => 'Arr' }
|
||||
|
||||
assert @ship.pirate.new_record?
|
||||
assert !@ship.pirate.persisted?
|
||||
assert_equal 'Arr', @ship.pirate.catchphrase
|
||||
end
|
||||
|
||||
@@ -369,7 +369,7 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
|
||||
def test_should_replace_an_existing_record_if_there_is_no_id
|
||||
@ship.reload.pirate_attributes = { :catchphrase => 'Arr' }
|
||||
|
||||
assert @ship.pirate.new_record?
|
||||
assert !@ship.pirate.persisted?
|
||||
assert_equal 'Arr', @ship.pirate.catchphrase
|
||||
assert_equal 'Aye', @pirate.catchphrase
|
||||
end
|
||||
@@ -458,7 +458,7 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
|
||||
@pirate.delete
|
||||
@ship.reload.attributes = { :update_only_pirate_attributes => { :catchphrase => 'Arr' } }
|
||||
|
||||
assert @ship.update_only_pirate.new_record?
|
||||
assert !@ship.update_only_pirate.persisted?
|
||||
end
|
||||
|
||||
def test_should_update_existing_when_update_only_is_true_and_no_id_is_given
|
||||
@@ -596,10 +596,10 @@ module NestedAttributesOnACollectionAssociationTests
|
||||
association_getter => { 'foo' => { :name => 'Grace OMalley' }, 'bar' => { :name => 'Privateers Greed' }}
|
||||
}
|
||||
|
||||
assert @pirate.send(@association_name).first.new_record?
|
||||
assert !@pirate.send(@association_name).first.persisted?
|
||||
assert_equal 'Grace OMalley', @pirate.send(@association_name).first.name
|
||||
|
||||
assert @pirate.send(@association_name).last.new_record?
|
||||
assert !@pirate.send(@association_name).last.persisted?
|
||||
assert_equal 'Privateers Greed', @pirate.send(@association_name).last.name
|
||||
end
|
||||
|
||||
|
||||
@@ -383,7 +383,7 @@ class RelationTest < ActiveRecord::TestCase
|
||||
|
||||
lifo = authors.find_or_initialize_by_name('Lifo')
|
||||
assert_equal "Lifo", lifo.name
|
||||
assert lifo.new_record?
|
||||
assert !lifo.persisted?
|
||||
|
||||
assert_equal authors(:david), authors.find_or_initialize_by_name(:name => 'David')
|
||||
end
|
||||
@@ -393,7 +393,7 @@ class RelationTest < ActiveRecord::TestCase
|
||||
|
||||
lifo = authors.find_or_create_by_name('Lifo')
|
||||
assert_equal "Lifo", lifo.name
|
||||
assert ! lifo.new_record?
|
||||
assert lifo.persisted?
|
||||
|
||||
assert_equal authors(:david), authors.find_or_create_by_name(:name => 'David')
|
||||
end
|
||||
@@ -627,10 +627,10 @@ class RelationTest < ActiveRecord::TestCase
|
||||
|
||||
sparrow = birds.create
|
||||
assert_kind_of Bird, sparrow
|
||||
assert sparrow.new_record?
|
||||
assert !sparrow.persisted?
|
||||
|
||||
hen = birds.where(:name => 'hen').create
|
||||
assert ! hen.new_record?
|
||||
assert hen.persisted?
|
||||
assert_equal 'hen', hen.name
|
||||
end
|
||||
|
||||
@@ -641,7 +641,7 @@ class RelationTest < ActiveRecord::TestCase
|
||||
|
||||
hen = birds.where(:name => 'hen').create!
|
||||
assert_kind_of Bird, hen
|
||||
assert ! hen.new_record?
|
||||
assert hen.persisted?
|
||||
assert_equal 'hen', hen.name
|
||||
end
|
||||
|
||||
|
||||
@@ -18,9 +18,9 @@ module ActiveRecord
|
||||
assert !Session.table_exists?
|
||||
end
|
||||
|
||||
def test_new_record?
|
||||
def test_persisted?
|
||||
s = SqlBypass.new :data => 'foo', :session_id => 10
|
||||
assert s.new_record?, 'this is a new record!'
|
||||
assert !s.persisted?, 'this is a new record!'
|
||||
end
|
||||
|
||||
def test_not_loaded?
|
||||
|
||||
@@ -182,7 +182,7 @@ class TransactionTest < ActiveRecord::TestCase
|
||||
:bonus_time => "2005-01-30t15:28:00.00+01:00",
|
||||
:content => "Have a nice day",
|
||||
:approved => false)
|
||||
new_record_snapshot = new_topic.new_record?
|
||||
new_record_snapshot = !new_topic.persisted?
|
||||
id_present = new_topic.has_attribute?(Topic.primary_key)
|
||||
id_snapshot = new_topic.id
|
||||
|
||||
@@ -195,7 +195,7 @@ class TransactionTest < ActiveRecord::TestCase
|
||||
flunk
|
||||
rescue => e
|
||||
assert_equal "Make the transaction rollback", e.message
|
||||
assert_equal new_record_snapshot, new_topic.new_record?, "The topic should have its old new_record value"
|
||||
assert_equal new_record_snapshot, !new_topic.persisted?, "The topic should have its old persisted value"
|
||||
assert_equal id_snapshot, new_topic.id, "The topic should have its old id"
|
||||
assert_equal id_present, new_topic.has_attribute?(Topic.primary_key)
|
||||
ensure
|
||||
@@ -370,21 +370,21 @@ class TransactionTest < ActiveRecord::TestCase
|
||||
assert topic_2.save
|
||||
@first.save
|
||||
@second.destroy
|
||||
assert_equal false, topic_1.new_record?
|
||||
assert_equal true, topic_1.persisted?
|
||||
assert_not_nil topic_1.id
|
||||
assert_equal false, topic_2.new_record?
|
||||
assert_equal true, topic_2.persisted?
|
||||
assert_not_nil topic_2.id
|
||||
assert_equal false, @first.new_record?
|
||||
assert_equal true, @first.persisted?
|
||||
assert_not_nil @first.id
|
||||
assert_equal true, @second.destroyed?
|
||||
raise ActiveRecord::Rollback
|
||||
end
|
||||
|
||||
assert_equal true, topic_1.new_record?
|
||||
assert_equal false, topic_1.persisted?
|
||||
assert_nil topic_1.id
|
||||
assert_equal true, topic_2.new_record?
|
||||
assert_equal false, topic_2.persisted?
|
||||
assert_nil topic_2.id
|
||||
assert_equal false, @first.new_record?
|
||||
assert_equal true, @first.persisted?
|
||||
assert_not_nil @first.id
|
||||
assert_equal false, @second.destroyed?
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ class Eye < ActiveRecord::Base
|
||||
after_save :trace_after_save2
|
||||
|
||||
def trace_after_create
|
||||
(@after_create_callbacks_stack ||= []) << iris.new_record?
|
||||
(@after_create_callbacks_stack ||= []) << !iris.persisted?
|
||||
end
|
||||
alias trace_after_create2 trace_after_create
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ class Pirate < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def reject_empty_ships_on_create(attributes)
|
||||
attributes.delete('_reject_me_if_new').present? && new_record?
|
||||
attributes.delete('_reject_me_if_new').present? && !persisted?
|
||||
end
|
||||
|
||||
attr_accessor :cancel_save_from_callback
|
||||
|
||||
@@ -8,7 +8,7 @@ class Subject < ActiveRecord::Base
|
||||
|
||||
protected
|
||||
def set_email_address
|
||||
if self.new_record?
|
||||
unless self.persisted?
|
||||
self.author_email_address = 'test@test.com'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -89,7 +89,7 @@ class Topic < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def set_email_address
|
||||
if self.new_record?
|
||||
unless self.persisted?
|
||||
self.author_email_address = 'test@test.com'
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user