aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model/dirty.rb
Commit message (Collapse)AuthorAgeFilesLines
* applies new string literal convention in activemodel/libXavier Noria2016-08-061-5/+5
| | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* Fixed bug introduced in #24519. Makes build green againBogdan Gusiev2016-04-131-1/+1
|
* Use keyword arguments to cleanup without droping performanceBogdan Gusiev2016-04-131-8/+8
|
* prevent 'attribute_changed?' from returning nilSen-Zhang2016-04-111-1/+1
|
* set default parameter to nil to speed up attribute_changed?Lihan Li2016-04-111-3/+5
| | | | | | | | | | | Benchmark results: Warming up -------------------------------------- old code 32.176k i/100ms new code 34.837k i/100ms Calculating ------------------------------------- old code 1.595M (± 3.5%) i/s - 7.947M new code 1.942M (± 3.9%) i/s - 9.685M
* Merge pull request #22333 from harrykiselev/patch-3Yves Senn2015-11-211-1/+5
|\ | | | | | | [ci skip] Update dirty.rb: documentation fix.
| * Update dirty.rb: documentation fix.Harry V. Kiselev2015-11-191-1/+5
|/ | | ActiveModel::Dirty module documentation fix.
* Improve the performance of `save` and friendsSean Griffin2015-09-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | The biggest source of the performance regression in these methods occurred because dirty tracking required eagerly materializing and type casting the assigned values. In the previous commits, I've changed dirty tracking to perform the comparisons lazily. However, all of this is moot when calling `save`, since `changes_applied` will be called, which just ends up eagerly materializing everything, anyway. With the new mutation tracker, it's easy to just compare the previous two hashes in the same lazy fashion. We will not have aliasing issues with this setup, which is proven by the fact that we're able to detect nested mutation. Before: User.create! 2.007k (± 7.1%) i/s - 10.098k After: User.create! 2.557k (± 3.5%) i/s - 12.789k Fixes #19859
* minor rdoc syntax fix [ci skip]Gourav Tiwari2015-05-081-2/+2
|
* Add `ActiveModel::Dirty#[attr_name]_previously_changed?` andFernando Tapia Rico2015-04-211-2/+21
| | | | | | | | `ActiveModel::Dirty#[attr_name]_previous_change` to improve access to recorded changes after the model has been saved. It makes the dirty-attributes query methods consistent before and after saving.
* Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-02-141-8/+9
|\
| * AM#Dirty doc fixesVipul A M2015-02-011-8/+9
| | | | | | | | | | | | - Grammar fixes - Add doc for changes_include? - implemntations => implementations
* | revises AM:Dirty example [Godfrey Chan & Xavier Noria]Xavier Noria2015-02-061-6/+2
| | | | | | | | | | | | | | | | | | | | The existing example seems somewhat forced: is it realistic to have a model that accepts state in its initializer but considers it has not been changed? By allowing state changes to happen only via accessors it seems more natural that new instances are considered to be unchanged (as they are in AR). [ci skip]
* | use parentheses here, for the beard of the Prophet! [ci skip]Xavier Noria2015-02-061-1/+1
| |
* | applies guidelines to dirty.rb [ci skip]Xavier Noria2015-02-061-11/+11
| |
* | Wrap method arguments with parentheses in docsCarlos Antonio da Silva2015-02-031-1/+1
| | | | | | | | As per Rails general coding conventions. Related to #18794 [ci skip]
* | Person class doesn't contain finder methods, hence usage of Person.find_by ↵Vipul A M2015-02-031-1/+5
| | | | | | | | | | | | | | is wrong. Added simple initialize and made use of Person.new instead of Person.find_by to clarify the docs. [ci skip]
* | Don't calculate in-place changes on attribute assignmentSean Griffin2015-01-181-0/+1
|/ | | | | | | | | | | When an attribute is assigned, we determine if it was already marked as changed so we can determine if we need to clear the changes, or mark it as changed. Since this only affects the `attributes_changed_by_setter` hash, in-place changes are irrelevant to this process. Since calculating in-place changes can be expensive, we can just skip it here. I also added a test for the only edge case I could think of that would be affected by this change.
* Remove unneeded requiresRafael Mendonça França2015-01-041-1/+0
| | | | These requires were added only to change deprecation message
* Remove deprecated `ActiveModel::Dirty#reset_#{attribute}` and ↵Rafael Mendonça França2015-01-041-20/+0
| | | | `ActiveModel::Dirty#reset_changes`.
* Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-01-031-1/+1
|\
| * Use Active Model, not ActiveModel in plain Englishclaudiob2015-01-021-1/+1
| | | | | | | | | | | | | | Also prevents the word "Model" from linking to the documentation of ActiveModel::Model because that's not intended. [ci skip]
* | Don't calculate all in-place changes to determine if attribute_changed?Sean Griffin2014-12-221-1/+5
|/ | | | | | | | | Calling `changed_attributes` will ultimately check if every mutable attribute has changed in place. Since this gets called whenever an attribute is assigned, it's extremely slow. Instead, we can avoid this calculation until we actually need it. Fixes #18029
* add brackets around attribute_name_tiii2014-12-081-1/+1
| | | | | | since 'attr_name_will_change!' is not an actual method it should be clearer that you have to insert the attribute name as in line 104 [ci skip]
* [Enh] Changed the visibility of the ↵Daniele Di Bernardo2014-11-061-1/+1
| | | | | | | | | ActiveModel::Dirty#clear_attribute_changes method In Rails 4.2 it is impossible to define a custom default value for a model's attribute without making it appear as _changed?, especially when the model is first initialized. Making this method publicly visible will allow such a behaviour, without the need to use private APIs.
* edit pass over all warningsXavier Noria2014-10-281-2/+10
| | | | | | | | | | | | | | | This patch uniformizes warning messages. I used the most common style already present in the code base: * Capitalize the first word. * End the message with a full stop. * "Rails 5" instead of "Rails 5.0". * Backticks for method names and inline code. Also, converted a few long strings into the new heredoc convention.
* Don't expose these new APIs yet (added in 877ea78 / #16189)Godfrey Chan2014-08-161-14/+15
| | | | | | | WARNING: don't use them! They might change or go away between future beta/RC/ patch releases! Also added a CHANGELOG entry for this.
* Implement `_was` and `changes` for in-place mutations of AR attributesSean Griffin2014-08-161-3/+16
|
* Make restore_attributes publicRafael Mendonça França2014-07-171-5/+5
| | | | | | | Also make it accept a list of attributes to be changed. This will make possible to restore only a subset of the changed attributes. Closes #16203
* Deprecate `reset_#{attribute}` in favor of `restore_#{attribute}`.Rafael Mendonça França2014-07-151-4/+12
| | | | | | | | | These methods may cause confusion with the `reset_changes` that behaves differently of them. Also rename undo_changes to restore_changes to match this new set of methods.
* Deprecate ActiveModel::Dirty#reset_changes in favor of ↵Rafael Mendonça França2014-07-151-4/+12
| | | | | | | | | #clear_changes_information This method name is causing confusion with the `reset_#{attribute}` methods. While `reset_name` set the value of the name attribute for the previous value the `reset_changes` only discard the changes and previous changes.
* Rename rollback_changes to undo_changesRafael Mendonça França2014-06-301-3/+3
| | | | To avoid overload with database rollback
* Add CHANGELOG entry for #14861 and document private methods on the APIRafael Mendonça França2014-06-301-5/+5
|
* Merge pull request #14861 from igor04/dirty-rollbackRafael Mendonça França2014-06-301-0/+17
|\ | | | | | | Added rollback method to ActiveModel::Dirty
| * Added rollback method to ActiveModel::Dirtyigor042014-06-231-0/+17
| |
* | We are talking about the libraries, not the constantsSean Griffin2014-06-271-3/+3
| |
* | Note that `_will_change!` is no longer needed for AR instancesSean Griffin2014-06-271-3/+5
|/ | | | | | | Leave the note for `ActiveModel`, since it can't yet detect mutations (hopefully we can change this in time for 4.2). However, we now detect mutations on all supported types in `ActiveRecord`, so we can note that `_will_change!` is no longer needed there.
* Forgot to push this change in the parent commitRafael Mendonça França2014-01-201-1/+1
|
* When applying changes or reseting changes create the right classRafael Mendonça França2014-01-201-3/+3
| | | | | | | Before this patch after the changes are applied the changes can be only accessed using string keys, but before symbols are also accepted. After this change every state of the model will be consistent.
* Allows you to check if an attribute has changed to a particular valueTejas Dinkar2013-12-151-2/+6
| | | | model.name_changed?(from: "Pete", to: "Ringo")
* Added :nodoc: for `attribute_changed?` and `attribute_was` [ci skip]Godfrey Chan2013-12-121-2/+2
| | | | | | These methods were made "public" in 47617ecd so that `method_missing` can invoke them without going through `send`, but they aren't meant for consumption from outside of Rails.
* Merge pull request #8791 from griffinmyers/masterRafael Mendonça França2013-10-031-1/+1
|\ | | | | | | | | | | | | Updated DirtyModel's @changed_attributes hash to be symbol/string agnostic Conflicts: activemodel/CHANGELOG.md
| * DirtyModel uses a hash to keep track of any changes made to attributesWilliam Myers2013-05-271-1/+1
| | | | | | | | | | | | | | | | | | of an instance. When using the attribute_will_change! method, you must supply a string and not a symbol or the *_changed? method will break (because it is looking for the attribute name as a string in the keys of the underlying hash). To remedy this, I simply made the underlying hash a HashWithIndifferentAccess so it won't matter if you supply the attribute name as a symbol or string to attribute_will_change!.
* | Fix the documentation method.Rafael Mendonça França2013-09-231-1/+1
| | | | | | | | | | | | It is reload! in the class definition. [ci skip]
* | Document reset_changes since it is part of public APIRafael Mendonça França2013-09-231-0/+12
| | | | | | | | [ci skip]
* | Merge pull request #10816 from bogdan/less-dirty-dirtyRafael Mendonça França2013-09-231-10/+16
| | | | | | | | Make AM::Dirty less dirty to plugin into AR or other library
* | expose a few attribute changed methodsAaron Patterson2013-06-111-10/+10
| |
* | Convert ActiveModel to 1.9 hash syntax.Patrick Robertson2013-05-011-1/+1
| | | | | | | | | | I also attempted to fix other styleguide violations such as { a: :b } over {a: :b} and foo(b: 'bar') over foo( b: 'bar' ).
* | Prefer find_by over dynamic finders in rdocSam Ruby2013-04-021-1/+1
| |
* | Revert "Merge pull request #8989 from robertomiranda/use-rails-4-find-by"Guillermo Iguaran2013-01-181-1/+1
| | | | | | | | | | This reverts commit 637a7d9d357a0f3f725b0548282ca8c5e7d4af4a, reversing changes made to 5937bd02dee112646469848d7fe8a8bfcef5b4c1.