aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
* Correctly handle Float -> BigDecimal with unspecified precisionSean Griffin2014-12-221-1/+9
| | | | Fixes #18122
* Fixed syntax error in RDoc directiveZachary Scott2014-12-201-1/+1
|
* Merge pull request #18092 from nippysaurus/clarity_batch_starting_pointArthur Nogueira Neves2014-12-201-2/+2
|\ | | | | Update description for `start` parameter.
| * Clarity start parameterMichael Dawson2014-12-191-2/+2
| | | | | | | | | | | | I find that `Specifies the starting point for the batch processing.` does not give enough information for me to understand what this parameter actually does.
* | Merge pull request #18102 from arthurnn/nodoc_constantArthur Nogueira Neves2014-12-191-0/+2
| | | | | | | | Add nodoc to some constants [skip ci]
* | `force: :cascade` to recreate tables referenced by foreign-keys.Yves Senn2014-12-194-4/+13
| |
* | `db:structure:load` and `db:schema:load` no longer purge the database.Yves Senn2014-12-181-2/+0
|/ | | | | | | | | | | | | | | | | Closes #17945 `db:test:prepare` still purges the database to always keep the test database in a consistent state. This patch introduces new problems with `db:schema:load`. Prior to the introduction of foreign-keys, we could run this file against a non-empty database. Since every `create_table` containted the `force: true` option, this would recreate tables when loading the schema. However with foreign-keys in place, `force: true` wont work anymore and the task will crash. /cc @schneems
* Relax the UUID regexGodfrey Chan2014-12-181-9/+2
| | | | | | | | Apparently PG does not validate against RFC 4122. The intent of the original patch is just to protect against PG errors (which potentially breaks txns, etc) because of bad user input, so we shouldn't try any harder than PG itself. Closes #17931
* `update_column` take ruby-land input, not database-land inputSean Griffin2014-12-163-1/+23
| | | | | | | | | | | | | | | In the case of serialized columns, we would expect the unserialized value as input, not the serialized value. The original issue which made this distinction, #14163, introduced a bug. If you passed serialized input to the method, it would double serialize when it was sent to the database. You would see the wrong input upon reloading, or get an error if you had a specific type on the serialized column. To put it another way, `update_column` is a special case of `update_all`, which would take `['a']` and not `['a'].to_yaml`, but you would not pass data from `params` to it. Fixes #18037
* Pass connection rather than alias_trackereileencodes2014-12-131-16/+17
| | | | | | | | | Because we're only using the `connection` so passing the entire tracker isn't unnecessary. Eventually only the `connection` will be passed to `add_constraints` with later refactoring but curretly that's not possible because of `construct_tables` method.
* Merge pull request #17994 from mfazekas/pluck-bind-values-masterSean Griffin2014-12-111-2/+2
|\ | | | | Fix ProtocolViolation/bind message for polymorphic + pluck or group+calc
| * Fix ProtocolViolation/bind message supplies for polymorphic + pluck or groupMiklos Fazkeas2014-12-111-2/+2
| |
* | Merge pull request #17793 from kamipo/fix_undesirable_range_errorSean Griffin2014-12-114-6/+37
|\ \ | | | | | | Fix undesirable RangeError by Type::Integer. Add Type::UnsignedInteger.
| * | Fix undesirable RangeError by Type::Integer. Add Type::UnsignedInteger.Ryuta Kamizono2014-12-124-6/+37
| |/
* / Refactor `quoted_date`Ryuta Kamizono2014-12-114-25/+13
|/ | | | Move microseconds formatting to `AbstractAdapter`.
* Merge pull request #17970 from ulissesalmeida/foreign-type-has-many-has-oneRafael Mendonça França2014-12-104-3/+15
|\ | | | | Add foreign_type option for polymorphic has_one and has_many.
| * Add foreign_type option for polymorphic has_one and has_many.Ulisses Almeida + Kassio Borges2014-12-084-3/+15
| | | | | | | | | | | | | | To be possible to use a custom column name to save/read the polymorphic associated type in a has_many or has_one polymorphic association, now users can use the option :foreign_type to inform in what column the associated object type will be saved.
* | Allow custom handling of non-standard types in `time_zone_conversion`Sean Griffin2014-12-081-1/+1
|/ | | | | | | | | | | | PostgreSQL for example, allows infinity as a valid value for date time columns. The PG type has explicit handling for that case. However, time zone conversion will end up trampling that handling. Unfortunately, we can't call super and then convert time zones. However, if we get back nil from `.in_time_zone`, it's something we didn't expect so we can let the superclass handle it. Fixes #17971
* Don't error when `attributes` is called on a frozen AR modelSean Griffin2014-12-081-1/+3
| | | | | | | | | | | | | | | | | | `freeze` will ultimately end up freezing the `AttributeSet`, which in turn freezes its `@attributes` hash. However, we actually insert a special object to lazily instantiate the values of the hash on demand. When it does need to actually instantiate all of them for iteration (the only case is `ActiveRecord::Base#attributes`, which calls `AttributeSet#to_h`), it will set an instance variable as a performance optimization Since it's just an optimization for subsequent calls, and that method being called at all is a very uncommon case, we can just leave the ivar alone if we're frozen, as opposed to coming up with some overly complicated mechanism for freezing which allows us to continue to modify ourselves. Fixes #17960
* Revert to 4.1 behavior for casting PG arraysSean Griffin2014-12-081-0/+3
| | | | | | | | | | The user is able to pass PG string literals in 4.1, and have it converted to an array. This is also possible in 4.2, but it would remain in string form until saving and reloading, which breaks our `attr = save.reload.attr` contract. I think we should deprecate this in 5.0, and only allow array input from user sources. However, this currently constitutes a breaking change to public API that did not go through a deprecation cycle.
* Merge pull request #17964 from ↵Rafael Mendonça França2014-12-081-1/+1
|\ | | | | | | | | carols10cents/improve-after-commit-argumenterror-message Make error message clearer that :on requires a symbol, not a string
| * Make error message clearer that :on requires a symbol, not a stringCarol Nichols2014-12-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The validation added in 5a3dc8092d19c816b0b1203945639cb91d065847 will reject values for the `:on` option for after_commit and after_rollback callbacks that are string values like `"create"`. However, the error message says ":on conditions for after_commit and after_rollback callbacks have to be one of create,destroy,update". That looks like a string value *would* be valid. This commit changes the error message to say ":on conditions for after_commit and after_rollback callbacks have to be one of [:create, :destroy, :update]", making it clearer that symbols are required.
* | Fix type case of "validations" and word-wrap from #17954 [ci skip]Zachary Scott2014-12-081-2/+3
| |
* | Add note to Store about uniqueness validation (#17954) [skip ci]Mike Chau2014-12-081-1/+4
| |
* | minor sentences fixesNeeraj Singh2014-12-071-3/+3
|/
* Fix grammar of sentence in Reflection documentationeileencodes2014-12-071-3/+3
|
* Correctly respect subtypes for PG arrays and rangesSean Griffin2014-12-052-10/+25
| | | | | | | | | | | | | The type registration was simply looking for the OID, and eagerly fetching/constructing the sub type when it was registered. However, numeric types have additional parameters which are extracted from the actual SQL string of the type during lookup, and can have their behavior change based on the result. We simply need to use the block form of registration, and look up the subtype lazily instead. Fixes #17935
* Merge pull request #17919 from mrgilman/stop-supporting-nested-arraysSean Griffin2014-12-041-10/+0
|\ | | | | Remove deprecated behavior allowing nested arrays as query values
| * Remove deprecated behavior allowing nested arrays as query valuesMelanie Gilman2014-12-041-10/+0
| |
* | Merge pull request #17920 from ↵Sean Griffin2014-12-041-1/+1
|\ \ | |/ |/| | | | | calebthompson/dont-rely-on-environment-task-for-schema-load Remove environment dependency for db:schema:load
| * Remove environment dependency for db:schema:loadCaleb Thompson2014-12-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All of the behavior :environment was giving (that db:schema:load needed) was provided as well with :load_config. This will address an issue introduced in https://github.com/rails/rails/pull/15394. The fact that db:schema:load now drops and creates the database causes the Octopus gem to have [an issue](https://github.com/tchandy/octopus/issues/273) during the drop step for the test database (which wasn't happening in db:schema:load before). The error looks like: ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: cannot drop the currently open database : DROP DATABASE IF EXISTS "app_test" Because of the timing, this issue is present in master, 4-2-*, and 4.1.8. A note to forlorn developers who might see this: "Additionally" in a commit message means you should have a separate commit, with a separate justification for changes. Small commits with big messages are your friends.
* | Deprecate `Class` handler in `PredicateBuilder`Melanie Gilman2014-12-041-3/+9
|/ | | | Users should pass strings to queries instead of classes
* docs, bring back `ActiveRecord::Core` methods in the API. [ci skip]Yves Senn2014-12-041-1/+0
| | | | | | | | | | | | This `# :nodoc:` had the effect of hiding every method that follows. This meant that the API page for `ActiveRecord::Core` only contained `configurations` and none of the following methods. Furthermore this `# :nodoc:` had no effect on `maintain_test_schema`. Those `mattr_accessor` inside the `included` block are not picked up by rdoc. /cc @zzak
* Clarify that batching methods can be used with any orderable type primary ↵Isaac Seymour2014-12-031-4/+4
| | | | key, not just integer ones, as per @a58cafeb3a86be46849de57481b6644094fb8165
* Merge pull request #17898 from mrgilman/move-predicate-builder-to-constructorSean Griffin2014-12-031-4/+5
|\ | | | | Move PredicateBuilder instantiation to constructor
| * Move PredicateBuilder instantiation to constructorMelanie Gilman2014-12-031-4/+5
| | | | | | | | In order to maintain thread safety and prevent race condition from memoization.
* | Merge pull request #17651 from ↵Yves Senn2014-12-033-4/+4
|\ \ | |/ |/| | | | | | | CLUSTERfoo/fix/adding_timestamps_migration_not_reversible Failure to rollback t.timestamps when within a change_table migration
| * Failure to rollback t.timestamps when within a change_table migrationnoam2014-12-033-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | When running the following migration: change_table(:table_name) { |t| t/timestamps } The following error was produced: wrong number of arguments (2 for 1) .... /connection_adapters/abstract/schema_statements.rb:851:in `remove_timestamps' This is due to `arguments` containing an empty hash as its second argument.
* | document that `.delete` does work on `#readonly?` records. Closes #11860Yves Senn2014-12-031-0/+2
|/ | | | | | | | [ci skip] This is due to the fact that `.delete` is directly translated to SQL. It tries to follow the same rules as `.delete_all` which is not able to verify that records are `#readonly?`.
* remove useless methodsSergey Alekseev2014-12-031-10/+0
|
* Refactor `build_from_hash` to convert dot notation to hash firstMelanie Gilman2014-12-021-29/+34
| | | | | | | | | | This ensures that we're handling all forms of nested tables the same way. We're aware that the `convert_dot_notation_to_hash` method will cause a performance hit, and we intend to come back to it once we've refactored some of the surrounding code. [Melissa Xie & Melanie Gilman]
* Merge pull request #17886 from mrgilman/refactor-predicate-builderSean Griffin2014-12-024-19/+32
|\ | | | | Refactor `PredicateBuilder` from singleton to instance
| * Refactor `PredicateBuilder` from singleton to instanceMelanie Gilman2014-12-024-19/+32
| |
* | Allow to unscope where conditions using `arel_table` with Symboldeeeki2014-12-031-1/+1
|/ | | | | | This commit fixes the following case. User.where(User.arel_table[:created_at].lteq(1.year.ago)).unscope(where :created_at)
* no need to pass native_database_types aroundYves Senn2014-12-023-7/+6
|
* Fix value extracted from negative integers for PostgreSQL.Guo Xiang Tan2014-12-011-1/+1
| | | | Fixes: https://github.com/rails/rails/issues/17856.
* Ensure numericality validations work with mutationSean Griffin2014-12-011-6/+6
| | | | | | | | | | | | | | | | | | | | | 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
* Fix grammar on ActiveRecord::AttributeMethods doc.Hendy Tanata2014-11-301-1/+1
| | | | [ci skip]
* Update Arel usage for rails/arel#98fc259Sean Griffin2014-11-294-8/+8
| | | | | `where_sql` now requires that we pass it an engine. None of the manager classes take an engine in their constructor.
* Stop using `Arel::Table.engine`Sean Griffin2014-11-294-5/+5
| | | | | | | | | | | | | We never actually make use of it on the table, since we're constructing the select manager manually. It looks like if we ever actually were grabbing it from the table, we're grossly misusing it since it's meant to vary by AR class. Its existence on `Arel::Table` appears to be purely for convenience methods that are never used outside of tests. However, in production code it just complicates construction of the tables on the rails side, and the plan is to remove it from `Arel::Table` entirely. I'm not convinced it needs to live on `SelectManager`, etc either.