aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/autosave_association.rb
Commit message (Collapse)AuthorAgeFilesLines
* Use has_attribute?Rafael Mendonça França2014-09-171-1/+1
|
* Don't autosave unchanged has_one through recordsAlan Kennedy2014-09-151-1/+3
|
* Do not mark object as persisted after an association is savedRafael Mendonça França2014-09-051-2/+0
| | | | | | | | | | | Callback order in Active Record objects are important. Users should not define callbacks before the association definition or surprising behaviours like the described at #3798 will happen. This callback order dependency is documented at https://github.com/rails/rails/blob/31bfcdc77ca0d8cec9b5fe513bdc6f05814dd4f1/activerecord/lib/active_record/associations.rb#L1222-1227. This reverts #15728. Fixes #16620.
* Don't save through records twiceSean Griffin2014-06-171-3/+2
| | | | | | | If the through record gets created in an `after_create` hook that is defined before the association is defined (therefore after its `after_create` hook) get saved twice. This ensures that the through records are created only once, regardless of the order of the hooks.
* add has_one? method and reuse instead of checking macroeileencodes2014-06-091-1/+1
| | | | | | Instead of checking for `macro == :has_one` throughout the codebase we can create a `has_one?` method to match the `belongs_to?`, `polymorphic?` and other methods.
* Fix redefine a has_and_belongs_to_many inside inherited classArthur Neves2014-05-271-24/+23
| | | | | | | | | After ad7b5efb55bcc2e0ccd3e7f22a81e984df8676d1, which changed how has_an_belongs_to_many used to work, we start raising an error when redefining the same has_an_belongs_to_many association. This commits fix that regression. [Fixes #14983]
* Merge pull request #15210 from arthurnn/fix_hbtm_reflectionArthur Neves2014-05-241-3/+5
| | | | | | | | | Fix habtm reflection Conflicts: activerecord/CHANGELOG.md activerecord/lib/active_record/counter_cache.rb activerecord/lib/active_record/reflection.rb activerecord/test/cases/reflection_test.rb
* Revert "Revert "Merge pull request #8313 from ↵Rafael Mendonça França2014-05-201-2/+3
| | | | | | | | | | | | | | | alan/only_save_changed_has_one_objects"" This reverts commit e94e6c27af495a2460c811bb506459f1428dec6b. Conflicts: activerecord/CHANGELOG.md The original commit was reverted only to be safe since #14407 were reported. We don't have any proof we added a regression with the original commit so reverting it now will give us more problem. Closes #14407
* Merge pull request #14924 from eric-chahin/issue_13854Matthew Draper2014-05-031-1/+2
|\ | | | | | | Fixed custom validation context bug for child associations
| * Fixed custom validation context bug where childEric Chahin2014-05-011-1/+2
|/ | | | | | | | associations were not being saved. Fixes #13854. [Eric Chahin, Aaron Nelson, & Kevin Casey]
* docs, make association `autosave: true` examples runnable. Closes #14700Yves Senn2014-04-111-6/+9
| | | | | | | | | | | | | | [ci skip] The examples are written in a way you expect them to be executable. However one snippet assumed there to be two comments when only one was created above. The defined models did not extend `ActiveRecord::Base` The example used `comments.last.mark_for_destruction`. This does no longer load the whole collection but just the last record. It is then refetcht on subsequent calls to `last`. This breaks the example.
* Revert "Merge pull request #8313 from alan/only_save_changed_has_one_objects"Rafael Mendonça França2014-03-251-3/+2
| | | | | | | | | This reverts commit 6e3ab3e15faf782f6a937ccf5574a4fb63e3e353, reversing changes made to 39e07b64ce3f4bb55e60ba0266e677f8e4f4893a. Conflicts: activerecord/CHANGELOG.md activerecord/test/cases/autosave_association_test.rb
* Merge pull request #8313 from alan/only_save_changed_has_one_objectsRafael Mendonça França2014-03-101-2/+3
|\ | | | | | | | | | | | | Save has_one associations only if record has changes Conflicts: activerecord/CHANGELOG.md
| * Save has_one associations only if record has changesAlan Kennedy2013-10-311-2/+3
| | | | | | | | | | | | Prevents save related callbacks such as `after_commit` being triggered when `has_one` objects are already persisted and have no changes.
* | Revert "context in validation goes through has many relationship"Aaron Patterson2014-02-201-1/+1
| | | | | | | | This reverts commit 5e3d466d52fa4e9a42c3a1f8773a7c31da875e48.
* | context in validation goes through has many relationshipKevin Casey2014-02-081-1/+1
|/
* Save association when primary key is manually setlaurocaetano2013-10-241-1/+7
|
* Fix some indentation on autosave associationArthur Neves2013-10-171-196/+196
|
* Make define_non_cyclic_method simplerArthur Neves2013-10-171-7/+7
|
* extend by adding relationships rather than monkey patchingAaron Patterson2013-07-221-6/+6
|
* decouple extensions from association object stateAaron Patterson2013-07-221-1/+1
|
* Do not re-save destroyed association on saving parent objectPaul Nikitochkin2013-07-151-0/+1
| | | | Closes #11450
* Revert "Merge pull request #4490 from EmmanuelOga/master"José Valim2013-06-041-1/+1
| | | | | | | | This behaviour doesn't actually make sense, the context of the child should not be affected by the parent. See #10492. This reverts commit 5f8274efe128ffeec8fa3179460f5167a078f007, reversing changes made to 81e837e810460d066a2e5fc5a795366ec8ab2313.
* destroys association records before saving/inserting new association recordsJohnny Holton2013-05-021-9/+8
| | | | | | | | | | | | | | | | | | | | | fixes bug introduced by #3329 These are the conditions necessary to reproduce the bug: - For an association, autosave => true. - An association record is being destroyed - A new association record is being created. - There is a unique index one of the association's fields. - The record being created has the same value as the record being destroyed on the indexed field. Before, the deletion of records was postponed until after all insertions/saves. Therefore the new record with the identical value in the indexed field caused a non-unique value error to be thrown at the database level. With this fix, the deletions happen first, before the insertions/saves. Therefore the record with the duplicate value is gone from the database before the new record is created, thereby avoiding the non-uniuqe value error.
* without autosave option updated records not saveNeeraj Singh2013-04-171-1/+2
| | | | | Emphasizing that without autosave option only new records are saved and updated records are not saved
* Prefer find_by over dynamic finders in rdocSam Ruby2013-04-021-4/+4
|
* Update other counter caches on destroyIan Young2013-03-201-0/+14
|
* No need to send public methodsAkira Matsuda2013-02-261-1/+1
|
* Revert "Merge pull request #8989 from robertomiranda/use-rails-4-find-by"Guillermo Iguaran2013-01-181-4/+4
| | | | | This reverts commit 637a7d9d357a0f3f725b0548282ca8c5e7d4af4a, reversing changes made to 5937bd02dee112646469848d7fe8a8bfcef5b4c1.
* User Rails 4 find_byrobertomiranda2013-01-181-4/+4
|
* Cleans and removes 'Examples' tag [ci skip]Alvaro Pereyra2012-12-011-2/+0
|
* 1.9 hash syntax changesAvnerCohen2012-11-081-11/+11
|
* Merge pull request #5248 from ↵Jon Leighton2012-09-211-0/+1
|\ | | | | | | | | jcoleman/should-unset-association-when-an-existing-record-is-destroyed Unset association when existing record is destroyed.
| * Unset association when existing record is destroyed.James Coleman2012-03-021-0/+1
| | | | | | | | To avoid foreign key errors (and invalid data) in the database, when a belongs_to association is destroyed, it should also be nil'd out on the parent object.
* | stop using class_attribute where methods/inheritance will suffice.Jon Leighton2012-07-131-10/+4
| |
* | CollectionProxy < RelationJon Leighton2012-05-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This helps bring the interfaces of CollectionProxy and Relation closer together, and reduces the delegation backflips we need to perform. For example, first_or_create is defined thus: class ActiveRecord::Relation def first_or_create(...) first || create(...) end end If CollectionProxy < Relation, then post.comments.first_or_create will hit the association's #create method which will actually add the new record to the association, just as post.comments.create would. With the previous delegation, post.comments.first_or_create expands to post.comments.scoped.first_or_create, where post.comments.scoped has no knowledge of the association.
* | Merge pull request #3329 from armstrjare/autosave_collection_new_record_bugJosé Valim2012-03-181-1/+6
|\ \ | | | | | | Autosave association doesn't save all records on a new record for a collection association if there are records marked for destruction
| * | Fix bug with autosave collection association on new record with a marked for ↵Jared Armstrong2012-03-181-1/+6
| | | | | | | | | | | | destroy record in autosave collection.
* | | Updates 'modyfing' typo to 'modifying'Jonathan R. Wallace2012-03-171-1/+1
|/ /
* | Remove IdentityMapCarlos Antonio da Silva2012-03-131-6/+0
| |
* | Refactor and cleanup in some ActiveRecord modulesCarlos Antonio da Silva2012-03-031-16/+14
| | | | | | | | | | | | | | | | | | | | | | * Avoid double hash lookups in AR::Reflection when reflecting associations/aggregations * Minor cleanups: use elsif, do..end, if..else instead of unless..else * Simplify DynamicMatchers#respond_to? * Use "where" instead of scoped with conditions hash * Extract `scoped_by` method pattern regexp to constant * Extract noisy class_eval from method_missing in dynamic matchers * Extract readonly check, avoid calling column#to_s twice in persistence * Refactor predicate builder, remove some variables
* | Revert "Remove meaningless code from the examples" of AutosaveAssociation Dimitar Dimitrov2012-02-221-0/+3
| | | | | | Reverts a part of 91148936f770dc8bbbb33d46a09528f1a32d8a71. Should probably be squashed with it when merging back in rails/rails.
* | Minor fixes to ActiveRecord::AutosaveAssociation's docs Dimitar Dimitrov2012-02-221-5/+3
|/ | | | * Fix typos * Remove meaningless code from the examples
* validate related records in the same validation context as parent.Emmanuel Oga2012-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | E.G.: ```ruby class Parent < ActiveRecord::Base has_one :child validates_presence_of :name, :on => "custom_context" validates_associated :child end class Child < ActiveRecord::Base belongs_to :parent validates_presence_of :name, :on => "custom_context" end p = Parent.new(:name => "Montoto", :child => Child.new) p.valid?(:custom_context) # => Returns true, even though the child is not valid under the same context. ```
* Remove Array.wrap calls in ActiveRecordRafael Mendonça França2012-01-061-2/+0
|
* Don't try to autosave nested assocs. Fixes #2961.Jon Leighton2011-12-141-1/+1
|
* added information about callbacks created by autosave association (#3639)Jakub Kuźma2011-11-281-4/+16
|
* Test case and fix for rails/rails#3450Jan Varwig2011-11-271-1/+1
| | | | Asssigning a parent id to a belongs_to association actually updates the object that is validated when the association has :validates => true
* Raise error when using write_attribute with a non-existent attribute.Jon Leighton2011-09-131-1/+4
| | | | | | | | | Previously we would just silently write the attribute. This can lead to subtle bugs (for example, see the change in AutosaveAssociation where a through association would wrongly gain an attribute. Also, ensuring that we never gain any new attributes after initialization will allow me to reduce our dependence on method_missing.
* Don't construct association scope in initializer. This yields a big ↵Jon Leighton2011-07-071-1/+1
| | | | performance gain for cases where the association is never used to load the target, for example with preloading. Related: #1873.