aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #29788 from kamipo/remove_unused_mutex_mRafael França2017-07-171-7/+4
|\ | | | | Remove unused `Mutex_m` in Active Model
| * Make `generated_attribute_methods` to privateRyuta Kamizono2017-07-141-4/+4
| | | | | | | | Because `generated_attribute_methods` is an internal API.
| * Remove unused `Mutex_m` in Active ModelRyuta Kamizono2017-07-141-4/+1
| |
* | Allow multiparameter assigned attributes to be used with `text_field`Sean Griffin2017-07-172-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Between 4.2 and 5.0 the behavior of how multiparameter attributes interact with `_before_type_cast` changed. In 4.2 it returns the post-type-cast value. After 5.0, it returns the hash that gets sent to the type. This behavior is correct, but will cause an issue if you then tried to render that value in an input like `text_field` or `hidden_field`. In this case, we want those fields to use the post-type-cast form, instead of the `_before_type_cast` (the main reason it uses `_before_type_cast` at all is to avoid losing data when casting a non-numeric string to integer). I've opted to modify `came_from_user?` rather than introduce a new method for this as I want to avoid complicating that contract further, and technically the multiparameter hash didn't come from assignment, it was constructed internally by AR. Close #27888.
* | Use frozen string literal in activemodel/Kir Shatrov2017-07-1652-0/+104
|/
* Add ActiveModel::Errors#merge!Jahfer Husain2017-07-071-0/+12
| | | | | | | | | | | | | | | | | ActiveModel::Errors#merge! allows ActiveModel::Errors to append errors from a separate ActiveModel::Errors instance onto their own. Example: person = Person.new person.errors.add(:name, :blank) errors = ActiveModel::Errors.new(Person.new) errors.add(:name, :invalid) person.errors.merge!(errors) puts person.errors.messages # => { name: ["can't be blank", "is invalid"] }
* Fix `ActiveModel::Type::DateTime#serialize`Lisa Ugray2017-07-051-0/+4
| | | | | `ActiveModel::Type::DateTime#serialize` should return a `Time` object so that finding by a datetime column works correctly.
* [Active Model] require => require_relativeAkira Matsuda2017-07-017-23/+23
|
* Fix call-seq typo s/==/<=>/ [ci skip]Ryuta Kamizono2017-06-211-1/+1
| | | | Fixes #29512.
* add frozen string literal commentshotat2017-06-151-1/+3
|
* freeze stringshotat2017-06-141-1/+1
|
* enhance active model assignmentshotat2017-06-141-2/+3
|
* Docs: Fix output representation [ci skip]Viktor Fonic2017-05-311-2/+2
| | | The output of two string attributes is displayed differently in the docs. Standardize the output by always showing it as a comment.
* Add option for class_attribute default (#29270)David Heinemeier Hansson2017-05-293-7/+4
| | | | | | | | | | | | * Allow a default value to be declared for class_attribute * Convert to using class_attribute default rather than explicit setter * Removed instance_accessor option by mistake * False is a valid default value * Documentation
* Fix regression in Numericality validator where extra decimal places on Bradley Priest2017-05-271-1/+3
| | | a user input for a decimal column were ignored by numerically validations
* Fix broken RDoc formattingT.J. Schuck2017-05-261-1/+1
| | | | [ci skip]
* Define path with __dir__bogdanvlviv2017-05-232-2/+2
| | | | | | ".. with __dir__ we can restore order in the Universe." - by @fxn Related to 5b8738c2df003a96f0e490c43559747618d10f5f
* Improving docs for callbacks execution order [ci skip]dixpac2017-05-212-0/+6
| | | | | When define callbacks latest definition on the same callback/method overwrites previous ones.
* fix ActiveModel::Validator#kind code examples [ci skip]stve2017-05-021-2/+2
|
* remove uniqueness validators from ActiveModel examplesstve2017-05-022-5/+4
|
* Fix regexp in the doc [ci skip]Ryuta Kamizono2017-04-241-1/+1
| | | | Follow up of #17148.
* Move around AR::Dirty and fix _attribute methodAaron Patterson2017-04-142-8/+8
| | | | | | We already have a _read_attribute method that can get the value we need from the model. Lets define that method in AM::Dirty and use the existing one from AR::Dirty rather than introducing a new method.
* Merge pull request #28661 from ↵Aaron Patterson2017-04-141-4/+8
|\ | | | | | | | | bogdanvlviv/fix-dirty-attributes-if-override-attr_accessor Fix inconsistency with changed attributes when overriding AR attribute reader
| * Fix inconsistency with changed attributes when overriding AR attribute readerbogdanvlviv2017-04-121-4/+8
| |
* | :scissors:Ryuta Kamizono2017-04-132-2/+0
|/ | | | [ci skip]
* Don't freeze input stringsMatthew Draper2017-04-121-1/+6
| | | | | | | | | See 34321e4a433bb7eef48fd743286601403f8f7d82 for background on ImmutableString vs String. Our String type cannot delegate typecasting to ImmutableString, because the latter freezes its input: duplicating the value after that gives us an unfrozen result, but still mutates the originally passed object.
* Merge pull request #28632 from ↵Rafael França2017-04-071-4/+4
|\ | | | | | | | | kamipo/fix_warning_extra_states_are_no_longer_copied Fix `warning: extra states are no longer copied`
| * Fix `warning: extra states are no longer copied`Ryuta Kamizono2017-04-011-4/+4
| | | | | | | | | | | | `messages` has `default_proc` so calling `reject` causes the warning. https://github.com/ruby/ruby/blob/v2_4_1/hash.c#L1335-L1337
* | No need to check nilTsukuru Tanimichi2017-04-021-1/+1
|/ | | | | | | | | | ```ruby nil.respond_to?(:stringify_keys) # => false ``` ```ruby include ActiveModel::AttributeAssignment Object.new.assign_attributes(nil) # => ArgumentError: When assigning attributes, you must pass a hash as an argument. ```
* Fix ActiveModel::Errors #keys, #valuesbogdanvlviv2017-03-281-11/+6
| | | | | | | | | | | | | | | | | | Before: person.errors.keys # => [] person.errors.values # => [] person.errors[:name] # => [] person.errors.keys # => [:name] person.errors.values # => [[]] After: person.errors.keys # => [] person.errors.values # => [] person.errors[:name] # => [] person.errors.keys # => [] person.errors.values # => [] Related to #23468
* Merge pull request #28050 from namusyaka/avoid-converting-int-into-floatRafael Mendonça França2017-03-271-0/+1
|\ | | | | | | Avoid converting integer as a string into float
| * Avoid converting integer as a string into floatnamusyaka2017-02-181-0/+1
| |
* | Start Rails 5.2 developmentMatthew Draper2017-03-221-2/+2
| |
* | Remove non-exists method delegation and correct docjasl2017-03-111-9/+1
| |
* | Merge pull request #25296 from kamipo/use_inspect_for_type_cast_for_schemaRafael França2017-02-282-2/+2
|\ \ | | | | | | Use `inspect` in `type_cast_for_schema` for date/time and decimal values
| * | Use `inspect` in `type_cast_for_schema` for date/time and decimal valuesRyuta Kamizono2016-12-112-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently dumping defaults on schema is inconsistent. Before: ```ruby create_table "defaults", force: :cascade do |t| t.string "string_with_default", default: "Hello!" t.date "date_with_default", default: '2014-06-05' t.datetime "datetime_with_default", default: '2014-06-05 07:17:04' t.time "time_with_default", default: '2000-01-01 07:17:04' t.decimal "decimal_with_default", default: 1234567890 end ``` After: ```ruby create_table "defaults", force: :cascade do |t| t.string "string_with_default", default: "Hello!" t.date "date_with_default", default: "2014-06-05" t.datetime "datetime_with_default", default: "2014-06-05 07:17:04" t.time "time_with_default", default: "2000-01-01 07:17:04" t.decimal "decimal_with_default", default: "1234567890" end ```
* | | Match the behavior of bigdecimal after ↵Rafael Mendonça França2017-02-241-1/+5
| | | | | | | | | | | | https://github.com/ruby/bigdecimal/pull/55
* | | Fix invalid string Decimal casting under ruby 2.4John Hawthorn2017-02-241-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Ruby 2.4, BigDecimal(), as used by the Decimal cast, was changed so that it will raise ArgumentError when passed an invalid string, in order to be more consistent with Integer(), Float(), etc. The other numeric types use ex. to_i and to_f. Unfortunately, we can't simply change BigDecimal() to to_d. String#to_d raises errors like BigDecimal(), unlike all the other to_* methods (this should probably be filed as a ruby bug). Instead, this simulates the existing behaviour and the behaviour of the other to_* methods by finding a numeric string at the start of the passed in value, and parsing that using BigDecimal(). See also https://bugs.ruby-lang.org/issues/10286 https://github.com/ruby/bigdecimal/commit/3081a627cebdc1fc119425c7a9f009dbb6bec8e8
* | | Preparing for 5.1.0.beta1 releaseRafael Mendonça França2017-02-231-1/+1
| | |
* | | Fix `define_attribute_method` with Symbol in ARPrem Sichanugrist2017-02-211-1/+1
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This issue is only appear when you try to call `define_attribute_method` and passing a symbol in Active Record. It does not appear in isolation in Active Model itself. Before this patch, when you run `User.define_attribute_method :foo`, you will get: NoMethodError: undefined method `unpack' for :foo:Symbol from activerecord/lib/active_record/attribute_methods/read.rb:28:in `define_method_attribute' from activerecord/lib/active_record/attribute_methods/primary_key.rb:61:in `define_method_attribute' from activemodel/lib/active_model/attribute_methods.rb:292:in `block in define_attribute_method' from activemodel/lib/active_model/attribute_methods.rb:285:in `each' from activemodel/lib/active_model/attribute_methods.rb:285:in `define_attribute_method' This patch contains both a fix in Active Model and a test in Active Record for this error.
* | Remove `:doc:` for `NumericalityValidator` [ci skip]Ryuta Kamizono2017-02-171-5/+5
| | | | | | | | | | | | | | The `:doc:` was added in cdb9d7f but `NumericalityValidator` is already `:nodoc:` class. `:doc:` is unneeded. https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/numericality.rb#L3
* | change ActiveModel::Validation to ActiveModel::Validations in commentsSen Zhang2017-02-1510-10/+10
| |
* | Indicate units of 'limit' in 'Integer' error message.Corey Farwell2017-02-151-1/+1
| |
* | Remove unused requireRyuta Kamizono2017-02-121-2/+0
| | | | | | | | | | | | These files are not using `strip_heredoc`. Closes #27976
* | Remove deprecated behavior that halts callbacks when the return is falseRafael Mendonça França2017-02-072-2/+0
| |
* | Remove `ActiveModel::TestCase` from libyuuji.yaginuma2017-02-072-5/+0
| | | | | | | | | | | | `ActiveModel::TestCase` is used only for the test of Active Model. Also, it is a private API and can not be used in applications. Therefore, it is not necessary to include it in lib.
* | Make BigDecimal casting consistent on different platformsKir Shatrov2017-01-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Right now it behaves differently on JRuby: ``` --- expected +++ actual @@ -1 +1 @@ -#<BigDecimal:5f3c866c,'0.333333333333333333',18(20)> +#<BigDecimal:16e0afab,'0.3333333333333333',16(20)> ``` My initial PR (https://github.com/rails/rails/pull/27324) offered to let the precision to be decided by the platform and change the test expection, but other contributors suggested that we should change the default precision in Rails to be consistent of all platforms. The value (18) comes from the max default precision that comes from casting Rational(1/3) to BigDecimal.
* | Fix typoScott González2017-01-101-2/+2
| |
* | `self.` is not needed when calling its own instance methodAkira Matsuda2017-01-052-2/+2
| | | | | | | | Actually, private methods cannot be called with `self.`, so it's not just redundant, it's a bad habit in Ruby
* | Revert "Merge pull request #27528 from kamipo/extract_casted_booleans"Kasper Timm Hansen2017-01-011-12/+4
| | | | | | | | | | | | | | | | | | | | | | As pointed out by @matthewd this change makes ImmutableString aware of MysqlString's existence whereas previously MysqlString was only overriding public API. cc @kamipo This reverts commit e632c2fa4cb60072a778ce95c952a0fa95e5b074, reversing changes made to 334a7dcf107cd3ff1697163d331d289d6d65dcd7.