aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | 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
| | | |
* | | | 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.
* | | | | Deprecate automatic counter caches on has_many :throughSean Griffin2014-06-2615-36/+87
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | `Attribute` should know about its nameSean Griffin2014-06-265-44/+64
| | | | | | | | | | | | | | | | | | | | This allows using polymorphism for the uninitialized attributes raising an exception behavior.
* | | | 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
| | | | | | |
* | | | | | | synchronize Active Record deprecations / removals with 4.2 release notesYves Senn2014-06-251-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [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`.
* | | | | | | Doc pass for `Type::Value` [ci skip]Sean Griffin2014-06-242-23/+43
| | | | | | |
* | | | | | | Merge pull request #15895 from sgrif/sg-numeric-changesYves Senn2014-06-243-3/+35
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Always assume strings with non-numeric characters change numeric types
| * | | | | | | Always assume strings with non-numeric characters change numeric typesSean Griffin2014-06-243-3/+35
| | |_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We previously only did this if the old value was zero, to make sure numericality validations run and failed if the user gave 'wibble' as the value, which would be type cast to 0. However, numericality validations will fail if there are any non-numeric characters in the string, so 5 -> '5wibble' should also be marked as changed.
* / | | | | | Silence warning in testSean Griffin2014-06-242-7/+7
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | We still had one file using `column_for_attribute` when it could return nil, causing deprecation warnings in the tests.
* | | | | | add missing `:nodoc:` to `store.rb`. [ci skip]Yves Senn2014-06-241-4/+4
| | | | | |
* | | | | | add missing `:nodoc:` for recent refactorings. [ci skip]Yves Senn2014-06-2431-36/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding `# :nodoc:` to the parent `class` / `module` is not going to ignore nested classes or modules. There is a modifier `# :nodoc: all` but sadly the containing class or module will continue to be in the docs. /cc @sgrif
* | | | | | Merge pull request #15881 from mmozuras/remove_unused_paramsRafael Mendonça França2014-06-232-5/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | Remove unused params
| * | | | | | Remove unused param 'conn' from ConnectionPool#releaseMindaugas Mozūras2014-06-231-3/+3
| | | | | | |
| * | | | | | Remove unused param 'klass' from AttributeAssignment#read_otherMindaugas Mozūras2014-06-231-2/+2
| | |_|/ / / | |/| | | |
* | | | | | Merge pull request #15878 from sgrif/sg-null-columnRafael Mendonça França2014-06-235-33/+18
|\ \ \ \ \ \ | | | | | | | | | | | | | | Revert #15502, and add a deprecation warning instead.
| * | | | | | Add a deprecation cycle for `NullColumn` from `column_for_attribute`Sean Griffin2014-06-235-33/+18
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is public API, and `simple_form` depends on the `nil` return value. We need to go through a deprecation cycle to return a null object. If people want hash access, they can access the hash.
* / / / / / Small typoAnton Cherepanov2014-06-232-2/+2
|/ / / / /
* | | | | Merge pull request #15867 from sgrif/sg-rm-column-typesYves Senn2014-06-233-5/+1
|\ \ \ \ \ | | | | | | | | | | | | Remove unneeded `@column_types` instance variable
| * | | | | Remove unneeded `@column_types` instance variableSean Griffin2014-06-223-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | This was used more previously, but other uses have been removed.
* | | | | | changelog entries for #15866 and #15848Yves Senn2014-06-221-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | /cc @sgrif
* | | | | | Merge pull request #15848 from sgrif/sg-remove-deprecationYves Senn2014-06-221-8/+1
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Remove old deprecation warning
| * | | | | Remove old deprecation warningSean Griffin2014-06-221-8/+1
| | |/ / / | |/| | | | | | | | | | | | | | | | | | This has been around for a couple of versions now, a `NoMethodError` should suffice at this point.
* | | | | Merge pull request #15865 from sgrif/sg-missing-testYves Senn2014-06-221-0/+20
|\ \ \ \ \ | | | | | | | | | | | | Add missing test cases for `attribute_names` instance method
| * | | | | Add missing test cases for `attribute_names` instance methodSean Griffin2014-06-221-0/+20
| |/ / / / | | | | | | | | | | | | | | | | | | | | There is a class method with the same name that is tested, but not the instance method.
* / / / / `reload` should fully reload attributesSean Griffin2014-06-223-5/+8
|/ / / / | | | | | | | | | | | | | | | | | | | | `reload` is meant to put a record in the same state it would be if you were to do `Post.find(post.id)`. This means we should fully replace the attributes hash.
* | | | Merge pull request #15839 from sgrif/sg-attr-set-nullYves Senn2014-06-226-12/+17
|\ \ \ \ | | | | | | | | | | Return a null object from `AttributeSet#[]`
| * | | | Return a null object from `AttributeSet#[]`Sean Griffin2014-06-206-12/+17
| |/ / /
* | | | Merge pull request #15849 from sgrif/sg-move-attributesYves Senn2014-06-223-3/+14
|\ \ \ \ | | | | | | | | | | Move `attributes` to the `AttributeSet` object.
| * | | | Move `attributes` to the `AttributeSet` object.Sean Griffin2014-06-213-3/+14
| |/ / /
* / / / Add missing test cases for `attribute_method?`Sean Griffin2014-06-211-0/+11
|/ / /
* | | docs, configurations method is listed in the docs. [ci skip]Yves Senn2014-06-201-1/+0
| | | | | | | | | | | | | | | The :singleton-method: directive is printed in the docs. This directive is not necessary as the method is documentable just fine.
* | | Merge pull request #15728 from sgrif/sg-double-save-hm-tRafael Mendonça França2014-06-193-4/+30
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't save through records twice Conflicts: activerecord/CHANGELOG.md activerecord/test/cases/associations/has_many_through_associations_test.rb
| * | | Don't save through records twiceSean Griffin2014-06-173-3/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Merge pull request #15747 from sgrif/sg-trolololol-this-is-so-brokenRafael Mendonça França2014-06-193-1/+56
|\ \ \ \ | | | | | | | | | | Always update counter caches in memory when adding records
| * | | | Always update counter caches in memory when adding recordsSean Griffin2014-06-163-1/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before, calling `size` would only work if it skipped the cache, and would return a different result from the cache, but only if: - The association was previously loaded - Or you called size previously - But only if the size was 0 when you called it This ensures that the counter is appropriately updated in memory.