aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | Make the apply_inflections method case-sensitiveRobin Dupret2014-06-263-5/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since d3071db1, the apply_inflections method check if the downcased version of a string is contained inside the "whitelist" of uncountable words. However, if the word is composed of capital letters, it won't be matched in the list while it should. We can't simply revert to the previous behavior as there is a performance concern (benchmarked over /usr/share/dict/words): Before d3071db1 135.610000 0.290000 135.900000 (137.807081) Since d3071db1 22.170000 0.020000 22.190000 ( 22.530005) With the patch 22.060000 0.020000 22.080000 ( 22.125771) Benchmarked with http://git.io/aFnWig This way, the solution is to put the down-case version of words inside the @uncountables array.
* | | | | | | Change method visibilityRafael Mendonça França2014-06-261-2/+2
| | | | | | |
* | | | | | | Add nodoc to internal class [ci skip]Rafael Mendonça França2014-06-261-1/+1
| | | | | | |
* | | | | | | Merge pull request #15606 from senny/ar/foreign_key_supportRafael Mendonça França2014-06-2620-70/+739
|\ \ \ \ \ \ \ | |_|_|_|_|_|/ |/| | | | | | | | | | | | | Basic support for adding and removing foreign keys
| * | | | | | fk: add docsYves Senn2014-06-264-58/+166
| | | | | | |
| * | | | | | fk: review corrections: indent, visibility, syntax, wording.Yves Senn2014-06-265-52/+53
| | | | | | |
| * | | | | | fk: use random digest namesYves Senn2014-06-268-33/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The name of the foreign key is not relevant from a users perspective. Using random names resolves the urge to rename the foreign key when the respective table or column is renamed.
| * | | | | | fk: raise for invalid :on_update / :on_delete valuesYves Senn2014-06-262-3/+18
| | | | | | |
| * | | | | | fk: `add/remove_foreign_key` are noop for adapters that don't support fkYves Senn2014-06-262-0/+28
| | | | | | |
| * | | | | | fk: dump foreign keys at the bottom to make sure tables exist.Yves Senn2014-06-262-6/+16
| | | | | | |
| * | | | | | fk: raise when identifiers are longer than `allowed_index_name_length`.Yves Senn2014-06-262-1/+14
| | | | | | |
| * | | | | | fk: support for on_updateYves Senn2014-06-267-19/+46
| | | | | | |
| * | | | | | fk: rename `dependent` to `on_delete`Yves Senn2014-06-267-27/+26
| | | | | | |
| * | | | | | fk: infere column name from table names.Yves Senn2014-06-264-7/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows to create and remove foreign keys without specifying a column.
| * | | | | | fk: make `add_foreign_key` reversible.Yves Senn2014-06-263-1/+55
| | | | | | |
| * | | | | | fk: support dependent option (:delete, :nullify and :restrict).Yves Senn2014-06-267-4/+83
| | | | | | |
| * | | | | | fk: dump foreign keys to schema.rbYves Senn2014-06-264-2/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | respect `table_name_prefix` and `table_name_suffix`.
| * | | | | | fk: `:primary_key` option for non-standard pk's.Yves Senn2014-06-263-3/+25
| | | | | | |
| * | | | | | fk: generalize using `AlterTable` and `SchemaCreation`.Yves Senn2014-06-266-49/+64
| | | | | | |
| * | | | | | fk: `foreign_keys`, `add_foreign_key` and `remove_foreign_key` for MySQLYves Senn2014-06-266-21/+70
| | | | | | |
| * | | | | | fk: add `foreign_keys` for PostgreSQL adapter.Yves Senn2014-06-263-7/+65
| | | | | | |
| * | | | | | fk: `add_foreign_key` and `remove_foreign_key` for PostgreSQL adapter.Yves Senn2014-06-264-0/+85
|/ / / / / /
* | | | | | :nodoc: our SecureRandom patches [ci skip]Godfrey Chan2014-06-261-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These methods shouldn't be added to `SecureRandom`, as they are neither secure nor random. The more appropriate place for this seems to be `Digest`, so we should move them there. (Pull request welcomed!) Marking this `:nodoc:` for now, so we don't accidentally ship it as public API. See https://github.com/rails/rails/pull/15306/files#r13055862 for details.
* | | | | | Merge pull request #15924 from sgrif/sg-write-unknown-columnRafael Mendonça França2014-06-269-13/+34
|\ \ \ \ \ \ | | | | | | | | | | | | | | Move writing unknown column exception to null attribute
| * | | | | | Move writing unknown column exception to null attributeSean Griffin2014-06-269-13/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Making this change revealed several subtle bugs related to models with no primary key, and anonymous classes. These have been fixed as well, with regression tests added.
* | | | | | | Merge pull request #15916 from sgrif/sg-test-update-allRafael Mendonça França2014-06-264-30/+28
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | Consolidate testing of update_all type casting
| * | | | | | Consolidate testing of update_all type castingSean Griffin2014-06-264-30/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have several test cases on "tricky" types that are essentially testing that `update_all` goes through the same type casting behavior as a normal assignment + save. We recently had another case to add this test for another type in https://github.com/rails/rails/pull/12742. Rather than testing this separately for every type which is "tricky" when round tripping, let's instead have a fairly exhaustive test that ensures we're getting the correct values at every step for `update_all`. Given the structure of the code now, we can be confident that if the type is correct, and `update_all` is type casting correctly, we're going to get the right behavior for all types.
* | | | | | | Merge pull request #15754 from sgrif/sg-deprecate-hmt-counter-cacheRafael Mendonça França2014-06-2616-36/+93
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | Deprecate automatic counter caches on has_many :through
| * | | | | | Deprecate automatic counter caches on has_many :throughSean Griffin2014-06-2616-36/+93
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reliant on https://github.com/rails/rails/pull/15747 but pulled to a separate PR to reduce noise. `has_many :through` associations have the undocumented behavior of automatically detecting counter caches. However, the way in which it does so is inconsistent with counter caches everywhere else, and doesn't actually work consistently. As with normal `has_many` associations, the user should specify the counter cache on the `belongs_to`, if they'd like it updated.
* | | | | | Merge pull request #15870 from sgrif/sg-attribute-nameRafael Mendonça França2014-06-265-44/+64
|\ \ \ \ \ \ | | | | | | | | | | | | | | `Attribute` should know about its name
| * | | | | | `Attribute` should know about its nameSean Griffin2014-06-265-44/+64
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | This allows using polymorphism for the uninitialized attributes raising an exception behavior.
* | | | | | Merge pull request #15845 from robin850/jruby-isolationRafael Mendonça França2014-06-261-6/+16
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Make the isolated tests run on JRuby
| * | | | | Make the isolated tests run on JRubyRobin Dupret2014-06-211-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As there is no forking on JRuby, we need to spawn sub-processes to make the tests run in isolation. Previously, we were defining globally env variables and running the test file through backticks and delete these variables once the test ran. Now, we simply rely on IO.popen as this is cross-platform and the env variables are available during the child-process execution only so there are no race conditions. [Ben Browning & Robin Dupret]
* | | | | | Merge pull request #15834 from rmehner/allow_proc_and_symbol_for_only_integerRafael Mendonça França2014-06-263-1/+32
|\ \ \ \ \ \ | | | | | | | | | | | | | | Allow proc and symbol as values for `only_integer` of `NumericalityValidator`
| * | | | | | `only_integer` of `NumericalityValidator` now allows procs and symbolsRobin Mehner2014-06-223-1/+32
| | | | | | |
* | | | | | | Require shellwords since it is dependecy of this fileRafael Mendonça França2014-06-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes #15919
* | | | | | | Encapsulate the creation of `Attribute` objectsSean Griffin2014-06-267-19/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will make it less painful to add additional properties, which should persist across writes, such as `name`. Conflicts: activerecord/lib/active_record/attribute_set.rb
* | | | | | | Merge pull request #15868 from sgrif/sg-uninitialized-attributesRafael Mendonça França2014-06-266-28/+144
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move behavior of `read_attribute` to `AttributeSet` Conflicts: activerecord/lib/active_record/attribute_set.rb activerecord/test/cases/attribute_set_test.rb
| * | | | | | | Move behavior of `read_attribute` to `AttributeSet`Sean Griffin2014-06-256-28/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moved `Builder` to its own file, as it started looking very weird once I added private methods to the `AttributeSet` class and the `Builder` class started to grow. Would like to refactor `fetch_value` to change to ```ruby self[name].value(&block) ``` But that requires the attributes to know about their name, which they currently do not.
* | | | | | | | Merge pull request #15847 from sgrif/sg-encapsulate-result-typesRafael Mendonça França2014-06-265-28/+59
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Encapsulate knowledge of type objects on `ActiveRecord::Result`
| * | | | | | | | Encapsulate knowledge of type objects on `ActiveRecord::Result`Sean Griffin2014-06-225-28/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempting to reduce the number of places that care about the details of how type casting occurs. We remove the type casting of the primary key in `JoinDependecy`, rather than encapsulating it. It was originally added for consistency with https://github.com/rails/rails/commit/40898c8c19fa04442fc5f8fb5daf3a8bdb9a1e03#diff-06059df8d3dee3101718fb2c01151ad0R211, but that conditional was later removed in https://github.com/rails/rails/commit/d7ddaa530fd1b94e22d745cbaf2e8a5a34ee9734. What is important is that the same row twice will have the same value for the primary key, which it will.
* | | | | | | | | Merge pull request #15846 from sgrif/sg-attributes-before-type-castRafael Mendonça França2014-06-263-2/+13
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move `attributes_before_type_cast` to `AttributeSet` Conflicts: activerecord/lib/active_record/attribute_set.rb activerecord/test/cases/attribute_set_test.rb
| * | | | | | | | | Move `attributes_before_type_cast` to `AttributeSet`Sean Griffin2014-06-213-2/+13
| | |_|_|/ / / / / | |/| | | | | | |
* | | | | | | | | docs, fix BacktraceCleaner code example. Closes #15911. [ci skip]Yves Senn2014-06-251-1/+1
| | | | | | | | |
* | | | | | | | | sync deprecations and removals with 4.2 release notes. [ci skip]Yves Senn2014-06-251-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Noticed that there was no section about Action View and added the heading. Notable changes need to be compiled. /cc @chancancode @zzak
* | | | | | | | | synchronize Active Record deprecations / removals with 4.2 release notesYves Senn2014-06-252-2/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ci skip] /cc @chancancode @zzak
* | | | | | | | | `preload` preserves readonly flag on associations. #15853Yves Senn2014-06-253-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a partial fix for #15853. It only works when a `preload` is issued and not an `eager_load`. I've added a skipped failing test-case to keep in mind that we need to deal with `eager_load`.
* | | | | | | | | Merge pull request #15902 from yuki24/fix-name-error-bugRafael Mendonça França2014-06-242-5/+5
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Fix a bug where NameError#name returns a qualified name in string
| * | | | | | | | | Fix a bug where NameError#name returns a qualified name in stringYuki Nishijima2014-06-242-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ruby's original behaviour is that : * It only returns a const name, not a qualified aname * It returns a symbol, not a string
* | | | | | | | | | Merge pull request #15836 from DNNX/router-swap-select-sortRafael Mendonça França2014-06-241-1/+2
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Replace x.sort_by!.select! with x.select!.sort_by!