diff options
author | Eloy Duran <eloy.de.enige@gmail.com> | 2009-02-04 21:40:53 +0100 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2009-02-06 13:38:15 +1300 |
commit | db5d6950169f8f10b6aec85faa2c38e0c57315c7 (patch) | |
tree | 3006bf56cb37b3c603fac6e4d48bb3fb204cd4b0 /activerecord/lib/active_record | |
parent | 455a7633dbdb295de828eb2657433d47d85eb0bc (diff) | |
download | rails-db5d6950169f8f10b6aec85faa2c38e0c57315c7.tar.gz rails-db5d6950169f8f10b6aec85faa2c38e0c57315c7.tar.bz2 rails-db5d6950169f8f10b6aec85faa2c38e0c57315c7.zip |
Also save :autosave enabled associations when #save! is used.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
[#1877 state:committed]
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/autosave_association.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb index 07660ebd03..680b41518c 100644 --- a/activerecord/lib/active_record/autosave_association.rb +++ b/activerecord/lib/active_record/autosave_association.rb @@ -129,6 +129,7 @@ module ActiveRecord base.class_eval do alias_method_chain :reload, :autosave_associations alias_method_chain :save, :autosave_associations + alias_method_chain :save!, :autosave_associations alias_method_chain :valid?, :autosave_associations %w{ has_one belongs_to has_many has_and_belongs_to_many }.each do |type| @@ -161,6 +162,17 @@ module ActiveRecord end end + # Attempts to save the record just like save_with_autosave_associations but + # will raise a RecordInvalid exception instead of returning false if the + # record is not valid. + def save_with_autosave_associations! + if valid_with_autosave_associations? + save_with_autosave_associations(false) || raise(RecordNotSaved) + else + raise RecordInvalid.new(self) + end + end + # Returns whether or not the parent, <tt>self</tt>, and any loaded autosave associations are valid. def valid_with_autosave_associations? if valid_without_autosave_associations? |