aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #18634 from morgoth/deprecate-some-errors-methodsRafael Mendonça França2015-02-181-9/+28
|\ | | | | | | Deprecate `ActiveModel::Errors` `get`, `set` and `[]=` methods.
| * Deprecate `ActiveModel::Errors` `get`, `set` and `[]=` methods.Wojciech Wnętrzak2015-02-011-9/+28
| | | | | | | | They have inconsistent behaviour currently.
* | Tiny documentation edits [ci skip]Robin Dupret2015-02-151-4/+6
| |
* | Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-02-142-9/+10
|\ \
| * | AM#Dirty doc fixesVipul A M2015-02-011-8/+9
| | | | | | | | | | | | | | | | | | - Grammar fixes - Add doc for changes_include? - implemntations => implementations
| * | Fix description for AM::CallbacksVipul A M2015-01-311-1/+1
| | |
* | | Merge pull request #16381 from kakipo/validate-length-tokenizerRafael Mendonça França2015-02-131-7/+11
|\ \ \ | | | | | | | | | | | | Allow symbol as values for `tokenizer` of `LengthValidator`
| * | | Allow symbol as values for `tokenize` of `LengthValidator`kakipo2014-08-031-7/+11
| | | |
* | | | Merge pull request #18388 from claudiob/better-docs-for-active-model-lint-testsRafael Mendonça França2015-02-061-28/+32
|\ \ \ \ | | | | | | | | | | Better docs for AM::Lint::Tests
| * | | | Better docs for AM::Lint::Testsclaudiob2015-01-071-28/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes the original documentation of ActiveModel::Lint::Tests introduced in dbf20c2d to focus less on *why* the tests exist and more on *what* the tests do. For instance, `test_to_key` was documented as: > Returns an Enumerable of all (primary) key attributes... whereas `test_to_key` is simply a test meant to *fail* or *pass*, and the documentation above refers to `to_key`. [ci skip]
* | | | | 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]
* | | | | Fix validations on child record when record parent has validate: falseeileencodes2015-02-011-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #17621. This 5 year old (or older) issue causes validations to fire when a parent record has `validate: false` option and a child record is saved. It's not the responsibility of the model to validate an associated object unless the object was created or modified by the parent. Clean up tests related to validations `assert_nothing_raised` is not benefiting us in these tests Corrected spelling of "respects" It's better to use `assert_not_operator` over `assert !r.valid`
* | | | | Move required error message and changelog to Active RecordCarlos Antonio da Silva2015-02-011-2/+1
| |_|_|/ |/| | | | | | | | | | | | | | | The new association error belongs to Active Record, not Active Model. See #18700 for reference.
* | | | Provide a better error message on :required associationHenrik Nygren2015-01-281-0/+1
| | | | | | | | | | | | | | | | Fixes #18696.
* | | | Merge pull request #18670 from morgoth/fix-duplicating-errors-detailsYves Senn2015-01-241-1/+2
|\ \ \ \ | | | | | | | | | | Fixed duplicating ActiveModel::Errors#details
| * | | | Fixed duplicating ActiveModel::Errors#detailsWojciech Wnętrzak2015-01-241-1/+2
| | | | |
* | | | | use attribute assignment module logic during active model initializationEugene Gilburg2015-01-231-4/+3
|/ / / /
* | | | ✂️ and 💅 for #10776Sean Griffin2015-01-231-3/+2
| | | | | | | | | | | | | | | | | | | | Minor style changes across the board. Changed an alias to an explicit method declaration, since the alias will not be documented otherwise.
* | | | Extracted `ActiveRecord::AttributeAssignment` to ↵Bogdan Gusiev2015-01-231-0/+64
| | | | | | | | | | | | | | | | | | | | | | | | `ActiveModel::AttributesAssignment` Allows to use it for any object as an includable module.
* | | | Merge pull request #18322 from morgoth/add-error-codesRafael Mendonça França2015-01-211-20/+37
|\ \ \ \ | | | | | | | | | | Add ActiveModel::Errors#codes
| * | | | Add ActiveModel::Errors#detailsWojciech Wnętrzak2015-01-201-20/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To be able to return type of validator, one can now call `details` on Errors instance: ```ruby class User < ActiveRecord::Base validates :name, presence: true end ``` ```ruby user = User.new; user.valid?; user.errors.details => {name: [{error: :blank}]} ```
* | | | | Add missing AS core extension dependencyWojciech Wnętrzak2015-01-211-0/+1
|/ / / /
* | | / 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.
* | | Merge pull request #18439 from mokhan/validates-acceptance-of-arraySean Griffin2015-01-121-2/+6
|\ \ \ | | | | | | | | allow '1' or true for acceptance validation.
| * | | allow '1' or true for acceptance validation.mo khan2015-01-101-2/+6
| | | |
* | | | Fix error messages scope [skip ci]Anton Davydov2015-01-121-2/+2
|/ / /
* / / Remove attributes_protected_by_default reference, since ↵robertomiranda2015-01-091-7/+0
|/ / | | | | | | MassAssignmentSecurity was removed from ActiveModel f8c9a4d3e88181
* | removing unecessary parameter in private methodGeorge Millo2015-01-061-2/+2
| | | | | | | | '_singularize' only ever gets called with one argument
* | 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 pull request #17227 from claudiob/explicitly-abort-callbacksRafael Mendonça França2015-01-032-5/+3
|\ \ | | | | | | | | | | | | | | | | | | Introduce explicit way of halting callback chains by throwing :abort. Deprecate current implicit behavior of halting callback chains by returning `false` in apps ported to Rails 5.0. Completely remove that behavior in brand new Rails 5.0 apps. Conflicts: railties/CHANGELOG.md
| * | Deprecate `false` as the way to halt AM callbacksclaudiob2015-01-021-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, returning `false` in an ActiveModel `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)`.
| * | Deprecate `false` as the way to halt AM validation callbacksclaudiob2015-01-021-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, returning `false` in an ActiveModel validation callback such as `before_validation` 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)`.
| * | Throw :abort halts default CallbackChainsclaudiob2015-01-022-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes arguments and default value of CallbackChain's :terminator option. After this commit, Chains of callbacks defined **without** an explicit `:terminator` option will be halted as soon as a `before_` callback throws `:abort`. Chains of callbacks defined **with** a `:terminator` option will maintain their existing behavior of halting as soon as a `before_` callback matches the terminator's expectation. For instance, ActiveModel's callbacks will still halt the chain when a `before_` callback returns `false`.
* | | Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-01-038-10/+10
|\ \ \ | |/ / |/| |
| * | Use Active Model, not ActiveModel in plain Englishclaudiob2015-01-028-10/+10
| | | | | | | | | | | | | | | | | | | | | Also prevents the word "Model" from linking to the documentation of ActiveModel::Model because that's not intended. [ci skip]
* | | Use more semantic method to check passwordRohit Arondekar2014-12-301-1/+1
| | |
* | | 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
* | | Fix inaccurate docs in active_model errors [ci skip]Robson Marques2014-12-221-2/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | The default value for the argument `message` in `ActiveModel::Errors#add` has a new behavior since ca99ab2481d44d67bc392d0ec1125ff1439e9f94. Before person.errors.add(:name, nil) # => ["is invalid"] After person.errors.add(:name, nil) # => [nil]
* | Pass through the `prepend` option to `AS::Callback`Godfrey Chan2014-12-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | I'm not sure what's the use case for this, but apparently it broke some apps. Since it was not the intended result from #16210 I fixed it to not raise an exception anymore. However, I didn't add documentation for it because I don't know if this should be officially supported without knowing how it's meant to be used. In general, validations should be side-effect-free (other than adding to the error message to `@errors`). Order-dependent validations seems like a bad idea. Fixes #18002
* | 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]
* | Correctly handle multiple attribute method prefix/suffixes which matchSean Griffin2014-12-041-6/+4
| | | | | | | | | | | | | | | | | | Active Record defines `attribute_method_suffix :?`. That suffix will match any predicate method when the lookup occurs in Active Model. This will make it incorrectly decide that `id_changed?` should not exist, because it attempts to determine if the attribute `id_changed` is present, rather than `id` with the `_changed?` suffix. Instead, we will look for any correct match.
* | Ensure numericality validations work with mutationSean Griffin2014-12-011-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The detection of in-place changes caused a weird unexpected issue with numericality validations. That validator (out of necessity) works on the `_before_type_cast` version of the attribute, since on an `:integer` type column, a non-numeric string would type cast to 0. However, strings are mutable, and we changed strings to ensure that the post type cast version of the attribute was a different instance than the before type cast version (so the mutation detection can work properly). Even though strings are the only mutable type for which a numericality validation makes sense, special casing strings would feel like a strange change to make here. Instead, we can make the assumption that for all mutable types, we should work on the post-type-cast version of the attribute, since all cases which would return 0 for non-numeric strings are immutable. Fixes #17852
* | Start Rails 5 development :tada:Rafael Mendonça França2014-11-281-3/+3
| | | | | | | | | | | | | | We will support only Ruby >= 2.1. But right now we don't accept pull requests with syntax changes to drop support to Ruby 1.9.
* | Fixing documentation in JSON#from_jsonNick Veys2014-11-201-4/+4
| | | | | | | | | | Commit d67b289 introduced a tiny regression in the docs for #from_json, true needs to be included when the root node is present.
* | [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.