- 02 12月, 2016 1 次提交
-
-
由 Edgars Beigarts 提交于
-
- 02 11月, 2016 1 次提交
-
-
由 Sean Griffin 提交于
We pretty frequently get bug reports that "dirty is broken inside of after callbacks". Intuitively they are correct. You'd expect `Model.after_save { puts changed? }; model.save` to do the same thing as `model.save; puts model.changed?`, but it does not. However, changing this goes much farther than just making the behavior more intuitive. There are a _ton_ of places inside of AR that can be drastically simplified with this change. Specifically, autosave associations, timestamps, touch, counter cache, and just about anything else in AR that works with callbacks have code to try to avoid "double save" bugs which we will be able to flat out remove with this change. We introduce two new sets of methods, both with names that are meant to be more explicit than dirty. The first set maintains the old behavior, and their names are meant to center that they are about changes that occurred during the save that just happened. They are equivalent to `previous_changes` when called outside of after callbacks, or once the deprecation cycle moves. The second set is the new behavior. Their names imply that they are talking about changes from the database representation. The fact that this is what we really care about became clear when looking at `BelongsTo.touch_record` when tests were failing. I'm unsure that this set of methods should be in the public API. Outside of after callbacks, they are equivalent to the existing methods on dirty. Dirty itself is not deprecated, nor are the methods inside of it. They will only emit the warning when called inside of after callbacks. The scope of this breakage is pretty large, but the migration path is simple. Given how much this can improve our codebase, and considering that it makes our API more intuitive, I think it's worth doing.
-
- 29 10月, 2016 1 次提交
-
-
由 Rafael Mendonça França 提交于
-
- 20 9月, 2016 1 次提交
-
-
由 Rafael Mendonça França 提交于
When the association is autosaved we were storing the details with string keys. This was creating inconsistency with other details that are added using the `Errors#add` method. It was also inconsistent with the `Errors#messages` storage. To fix this inconsistency we are always storing with symbols. This will cause a small breaking change because in those cases the details could be accessed as strings keys but now it can not. The reason that we chose to do this breaking change is because `#details` should be considered a low level object like `#messages` is. Fix #26499. [Rafael Mendonça França + Marcus Vieira]
-
- 26 8月, 2016 1 次提交
-
-
由 James Coleman 提交于
Previously, if the the association was previously loaded and then the foreign key changed by itself, a #save call would trigger a load of the new associated record during autosave. This is unnecessary and the autosave code (in that case) didn't use the loaded record anyways.
-
- 07 8月, 2016 1 次提交
-
-
由 Xavier Noria 提交于
-
- 05 3月, 2016 1 次提交
-
-
由 Mehmet Emin İNAÇ 提交于
-
- 29 10月, 2015 1 次提交
-
-
由 Wojciech Wnętrzak 提交于
-
- 14 10月, 2015 2 次提交
-
-
由 Yves Senn 提交于
The focus of this change is to make the API more accessible. References to method and classes should be linked to make it easy to navigate around. This patch makes exzessiv use of `rdoc-ref:` to provide more readable docs. This makes it possible to document `ActiveRecord::Base#save` even though the method is within a separate module `ActiveRecord::Persistence`. The goal here is to bring the API closer to the actual code that you would write. This commit only deals with Active Record. The other gems will be updated accordingly but in different commits. The pass through Active Record is not completely finished yet. A follow up commit will change the spots I haven't yet had the time to update. /cc @fxn
-
由 Yves Senn 提交于
-
- 21 8月, 2015 1 次提交
-
-
由 Robert Eshleman 提交于
[ci skip]
-
- 20 7月, 2015 1 次提交
-
-
由 Sean Griffin 提交于
As per the docs, `mark_for_destruction` should do nothing if `autosave` is not set to true. We normally persist associations on a record no matter what if the record is a new record, but we were always skipping records which were `marked_for_destruction?`. Fixes #20882
-
- 18 7月, 2015 1 次提交
-
-
由 Sean Griffin 提交于
This code is so fucked. Things that cause this bug not to replicate: - Defining the validation before the association (we end up calling `uniq!` on the errors in the autosave validation) - Adding `accepts_nested_attributes_for` (I have no clue why. The only thing it does that should affect this is adds `autosave: true` to the inverse reflection, and doing that manually doesn't fix this). This solution is a hack, and I'm almost certain there's a better way to go about it, but this shouldn't cause a huge hit on validation times, and is the simplest way to get it done. Fixes #20874.
-
- 18 4月, 2015 1 次提交
-
-
由 Michael Probber 提交于
`has_many` can now take `index_errors: true` as an option. When this is enabled, errors for nested models will be returned alongside an index, as opposed to just the nested model name. This option can also be enabled (or disabled) globally through `ActiveRecord::Base.index_nested_attribute_errors` E.X. ```ruby class Guitar < ActiveRecord::Base has_many :tuning_pegs accepts_nested_attributes_for :tuning_pegs end class TuningPeg < ActiveRecord::Base belongs_to :guitar validates_numericality_of :pitch end ``` - Old style - `guitar.errors["tuning_pegs.pitch"] = ["is not a number"]` - New style (if defined globally, or set in has_many_relationship) - `guitar.errors["tuning_pegs[1].pitch"] = ["is not a number"]` [Michael Probber, Terence Sun]
-
- 30 1月, 2015 1 次提交
-
-
由 Sean Griffin 提交于
Collection associations would have already been validated, but singular associations were not. Fixes #18735.
-
- 05 1月, 2015 1 次提交
-
-
由 Miklos Fazkeas 提交于
When associations checked for autosave have a cycle, and none of them is dirty, then changed_for_autosave? will be an infinite loop. We now remember if we're in the check and will short circuit the recursion.
-
- 03 1月, 2015 2 次提交
-
-
由 claudiob 提交于
Before this commit, returning `false` in an ActiveRecord `before_` callback such as `before_create` would halt the callback chain. After this commit, the behavior is deprecated: will still work until the next release of Rails but will also display a deprecation warning. The preferred way to halt a callback chain is to explicitly `throw(:abort)`.
-
由 claudiob 提交于
After this commit, returning `false` in a callback will display a deprecation warning to make developers aware of the fact that they need to explicitly `throw(:abort)` if their intention is to halt a callback chain. This commit also patches two internal uses of AS::Callbacks (inside ActiveRecord and ActionDispatch) which sometimes return `false` but whose returned value is not meaningful for the purpose of execution. In both cases, the returned value is set to `true`, which does not affect the execution of the callbacks but prevents unrequested deprecation warnings from showing up.
-
- 29 11月, 2014 1 次提交
-
-
由 Erik Michaels-Ober 提交于
-
- 13 10月, 2014 1 次提交
-
- 18 9月, 2014 1 次提交
-
-
由 Rafael Mendonça França 提交于
-
- 15 9月, 2014 1 次提交
-
-
由 Alan Kennedy 提交于
-
- 06 9月, 2014 1 次提交
-
-
由 Rafael Mendonça França 提交于
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.
-
- 18 6月, 2014 1 次提交
-
-
由 Sean Griffin 提交于
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.
-
- 10 6月, 2014 1 次提交
-
-
由 eileencodes 提交于
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.
-
- 27 5月, 2014 1 次提交
-
-
由 Arthur Neves 提交于
After ad7b5efb, 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]
-
- 25 5月, 2014 1 次提交
-
-
由 Arthur Neves 提交于
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
-
- 21 5月, 2014 1 次提交
-
-
由 Rafael Mendonça França 提交于
This reverts commit e94e6c27. 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
-
- 01 5月, 2014 1 次提交
-
-
由 Eric Chahin 提交于
associations were not being saved. Fixes #13854. [Eric Chahin, Aaron Nelson, & Kevin Casey]
-
- 11 4月, 2014 1 次提交
-
-
由 Yves Senn 提交于
[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.
-
- 26 3月, 2014 1 次提交
-
-
由 Rafael Mendonça França 提交于
This reverts commit 6e3ab3e1, reversing changes made to 39e07b64. Conflicts: activerecord/CHANGELOG.md activerecord/test/cases/autosave_association_test.rb
-
- 21 2月, 2014 1 次提交
-
-
由 Aaron Patterson 提交于
This reverts commit 5e3d466d.
-
- 09 2月, 2014 1 次提交
-
-
由 Kevin Casey 提交于
-
- 01 11月, 2013 1 次提交
-
-
由 Alan Kennedy 提交于
Prevents save related callbacks such as `after_commit` being triggered when `has_one` objects are already persisted and have no changes.
-
- 25 10月, 2013 1 次提交
-
-
由 laurocaetano 提交于
-
- 17 10月, 2013 2 次提交
-
-
由 Arthur Neves 提交于
-
由 Arthur Neves 提交于
-
- 23 7月, 2013 2 次提交
-
-
由 Aaron Patterson 提交于
-
由 Aaron Patterson 提交于
-
- 16 7月, 2013 1 次提交
-
-
由 Paul Nikitochkin 提交于
Closes #11450
-