aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | Detect in-place modifications on StringsSean Griffin2014-06-174-13/+55
| | | | | |
* | | | | | Merge pull request #8639 from bogdan/valid-with-bangRafael Mendonça França2014-06-273-1/+36
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Add AR::Base#valid! method
| * | | | | | Add AR::Base#validate! methodBogdan Gusiev2014-06-232-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Acts same as valid? but raises AR::RecordInvalid exception if validation fails
* | | | | | | Merge pull request #15940 from DNNX/databases-rake-refactoringRafael Mendonça França2014-06-274-31/+52
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | databases.rake refactoring
| * | | | | | | Use AR::SchemaMigration.table_exists? call instead of longish AR::Base...etc,etcViktar Basharymau2014-06-271-1/+1
| | | | | | | |
| * | | | | | | Extract AR::SchemaMigration.normalized_versions methodViktar Basharymau2014-06-272-2/+5
| | | | | | | |
| * | | | | | | Add a test for db:migrate:status to check missing file scenarioViktar Basharymau2014-06-271-0/+15
| | | | | | | |
| * | | | | | | db:migrate:status refactoring: Rewrite hand-crafted SQL query with ↵Viktar Basharymau2014-06-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActiveRecord#pluck
| * | | | | | | Use Array#flat_map and Array#grep in db:migrate:status taskViktar Basharymau2014-06-271-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It allows the code to be more declarative and elegant.
| * | | | | | | Add explaining variables to db:migrate:statusViktar Basharymau2014-06-271-2/+2
| | | | | | | |
| * | | | | | | Replace String index juggling with Pathname goodness in db:fixtures:loadViktar Basharymau2014-06-271-1/+1
| | | | | | | |
| * | | | | | | db:fixtures:load refactoring: remove unnecessary loopViktar Basharymau2014-06-271-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `ActiveRecord::FixtureSet.create_fixtures` can accept an array of fixture_files.
| * | | | | | | Extract `fixture_files` variable in fixtures:load rake taskViktar Basharymau2014-06-271-1/+7
| | | | | | | |
| * | | | | | | Replace a bit of cryptic code in fixtures:load rake task with plain stupid RubyViktar Basharymau2014-06-271-1/+5
| | | | | | | |
| * | | | | | | Get rid of duplication in db:fixtures:{identify,load}Viktar Basharymau2014-06-272-12/+7
| | | | | | | |
| * | | | | | | db:fixtures:{identify,load} tasks respect AR::Tasks::DatabaseTasks.rootViktar Basharymau2014-06-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, if `ENV['FIXTURES_PATH']` was set, then `Rails.root` was used, otherwise the app used `ActiveRecord::Tasks::DatabaseTasks.root`. Now it is consistent.
| * | | | | | | Simplify complex code in databases.rakeViktar Basharymau2014-06-271-2/+2
| | | | | | | |
* | | | | | | | Merge pull request #15938 from sgrif/sg-stop-instance-execingRafael Mendonça França2014-06-273-17/+38
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | Stop using instance exec for type decorators
| * | | | | | | Stop using instance exec for type decoratorsSean Griffin & Sean Doyle2014-06-273-17/+38
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are moving this behavior out to an object that we would like to keep separated from `ActiveRecord::Base`, which means not passing the class object to it. As such, we need to stop using `instance_exec`, and instead close over the subclass on global type decorators that are applied in `Base`.
* | | | | | | Follow-up to #15215 [ci skip]Robin Dupret2014-06-273-10/+12
| | | | | | |
* | | | | | | credit Matthew Higgins for the integration of foreign keys. [ci skip]Yves Senn2014-06-271-0/+3
| | | | | | |
* | | | | | | Tiny follow-up to 1a69112Robin Dupret2014-06-271-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wrap list items to 80 chars and avoid relying on NOTE inside an item since they are meant to be parsed in paragraphs, not lists. [ci skip]
* | | | | | | Merge pull request #14247 from robin850/inflections-with-uncountablesRafael Mendonça França2014-06-263-5/+18
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Make the apply_inflections method case-sensitive
| * | | | | | | 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.