aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Mention `where.not` in the exampleGodfrey Chan2015-02-141-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...so it doesn't look like you *have* to use SQL strings for that case (not anymore!). Would like to replace the SQL string example with something that you cannot do with the "normal" query API, but I could not come up with a short, realistic example. Suggestions welcome!
* | | | | | Fixed a bug where NULLs are casted into the first enum valueGodfrey Chan2015-02-131-0/+1
| | | | | |
* | | | | | Partially revert ae33aeaGodfrey Chan2015-02-131-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using enum names in SQL strings doesn't actually work, the test was wrong (fixed in 3dfd1ba).
* | | | | | Enums mapping is a HWIA [ci skip]Godfrey Chan2015-02-131-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous edit kind of de-emphasized that, so changing it to be more explict. (It also avoids showing it as if it's a string-keyed hash.)
* | | | | | Enums should be referred to by symbolsGodfrey Chan2015-02-131-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also updated the documentation about the new ability to query them normally, and added test to make sure they work!
* | | | | | Do not overwrite secret token value when already present.Wojciech Wnętrzak2015-02-121-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` user = User.create(token: "custom-secure-token") user.token # => "custom-secure-token" ```
* | | | | | Optimize none? and one? relation query methods to use LIMIT and COUNT.Eugene Gilburg2015-02-123-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use SQL COUNT and LIMIT 1 queries for none? and one? methods if no block or limit is given, instead of loading the entire collection to memory. The any? and many? methods already follow this behavior. [Eugene Gilburg & Rafael Mendonça França]
* | | | | | Merge pull request #18886 from kamipo/allow_precision_option_for_time_columnRafael Mendonça França2015-02-125-19/+21
|\ \ \ \ \ \ | | | | | | | | | | | | | | Allow `:precision` option for time type columns
| * | | | | | Allow `:precision` option for time type columnsRyuta Kamizono2015-02-125-19/+21
| | | | | | |
* | | | | | | Schema creation doesn't load the appTamir Duberstein2015-02-111-1/+1
|/ / / / / /
* | | | | | Don't break enum on PGSean Griffin2015-02-111-1/+1
| | | | | |
* | | | | | Refactor enum to be defined in terms of the attributes APISean Griffin2015-02-111-43/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In addition to cleaning up the implementation, this allows type casting behavior to be applied consistently everywhere. (#where for example). A good example of this was the previous need for handling value to key conversion in the setter, because the number had to be passed to `where` directly. This is no longer required, since we can just pass the string along to where. (It's left around for backwards compat) Fixes #18387
* | | | | | `current_scope` shouldn't pollute sibling STI classesSean Griffin2015-02-112-6/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It looks like the only reason `current_scope` was thread local on `base_class` instead of `self` is to ensure that when we call a named scope created with a proc on the parent class, it correctly uses the default scope of the subclass. The reason this wasn't happening was because the proc captured `self` as the parent class, and we're not actually defining a real method. Using `instance_exec` fixes the problem. Fixes #18806
* | | | | | Merge pull request #18888 from kamipo/refactor_quote_default_expressionRafael Mendonça França2015-02-114-18/+12
|\ \ \ \ \ \ | | | | | | | | | | | | | | Refactor `quote_default_expression`
| * | | | | | Refactor `quote_default_expression`Ryuta Kamizono2015-02-114-18/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `quote_default_expression` and `quote_default_value` are almost the same handling for do not quote default function of `:uuid` columns. Rename `quote_default_value` to `quote_default_expression`, and remove duplicate code.
* | | | | | | Remove the SQLite3 Binary subclassSean Griffin2015-02-111-18/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As far as I can tell, the original reason that this behavior was added has been sufficiently resolved elsewhere, as we no longer remove the encoding of strings coming out of the database.
* | | | | | | Remove an unused option that I didn't mean to commit [ci skip]Sean Griffin2015-02-111-2/+1
| | | | | | |
* | | | | | | Remove most PG specific type subclassesSean Griffin2015-02-1113-90/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The latest version of the PG gem can actually convert the primitives for us in C code, which gives a pretty substantial speed up. A few cases were only there to add the `infinity` method, which I just put on the range type (which is the only place it was used). Floats also needed to parse `Infinity` and `NaN`, but it felt reasonable enough to put that on the generic form.
* | | | | | | Merge pull request #18883 from ↵Sean Griffin2015-02-112-1/+7
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/fix_datetime_precision_dumping_zero_for_postgresql The datetime precision with zero should be dumped
| * | | | | | | The datetime precision with zero should be dumpedRyuta Kamizono2015-02-112-1/+7
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | `precision: 0` was not dumped by f1a0fa9e19b7e4ccaea191fc6cf0613880222ee7. However, `precision: 0` is valid value for PostgreSQL timestamps.
* | | | | | | fix `remove_reference` with `foreign_key: true` on MySQL. #18664.Yves Senn2015-02-111-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MySQL rejects to remove an index which is used in a foreign key constraint: ``` ActiveRecord::StatementInvalid: Mysql2::Error: Cannot drop index 'index_copies_on_title_id': needed in a foreign key constraint: ALTER TABLE `copies` DROP `title_id` ``` Removing the constraint before removing the column (and the index) solves this problem.
* | | | | | | Merge pull request #18890 from kamipo/remove_cast_typeYves Senn2015-02-111-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Remove `cast_type` in `ColumnDefinition`
| * | | | | | | Remove `cast_type` in `ColumnDefinition`Ryuta Kamizono2015-02-111-1/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | This is no longer needed.
* / / / / / / Use keyword argument in `transaction`Ryuta Kamizono2015-02-111-6/+4
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | The keys are already validated, so it is better to use the built-in feature to do this.
* | | | | | Merge pull request #12257 from vipulnsward/end_on_find_in_batchesRafael Mendonça França2015-02-101-12/+22
|\ \ \ \ \ \ | | | | | | | | | | | | | | Add an option `end` to `find_in_batches`
| * | | | | | Add an option `end_at` to `find_in_batches`Vipul A M2015-02-091-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | that complements the `start`parameter to specify where to stop batch processing
* | | | | | | Refactor microsecond precision to be database agnosticSean Griffin2015-02-106-60/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The various databases don't actually need significantly different handling for this behavior, and they can achieve it without knowing about the type of the object. The old implementation was returning a string, which will cause problems such as breaking TZ aware attributes, and making it impossible for the adapters to supply their logic for time objects.
* | | | | | | Merge pull request #18860 from ↵Rafael Mendonça França2015-02-101-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | alex-handley/enhancement/dependent_documentation_fix Documentation Fix: Corrects explanation of what happens when dependent is not set
| * | | | | | | [ci skip] corrects documentation for the default dependent behaviourAlex Handley2015-02-091-1/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default the foreign key will remain set with the parent id after destroy is fired.
* | | | | | | Maintain a consistent order in `ActiveRecord::Base#attributes`Sean Griffin2015-02-101-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #18871
* | | | | | | Change `LockingType` to use `DelegateClass`Sean Griffin2015-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Significantly faster than `SimpleDelegator`.
* | | | | | | Merge pull request #18849 from kamipo/array_type_is_a_part_of_sql_typeSean Griffin2015-02-092-19/+4
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | An array type is a part of `sql_type`
| * | | | | | An array type is a part of `sql_type`Ryuta Kamizono2015-02-082-19/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `sql_type` is reused in `lookup_cast_type`. If making it a part of `sql_type` when handled array option first, it isn't necessary to do again.
* | | | | | | Fix rounding problem for PostgreSQL timestamp columnRyuta Kamizono2015-02-083-19/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If timestamp column have the precision, it need to format according to the precision of timestamp column.
* | | | | | | Merge pull request #18602 from kamipo/respect_database_charset_and_collationAndrew White2015-02-081-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Respect the database default charset for `schema_migrations` table.
| * | | | | | | Respect the database default charset for `schema_migrations` table.Ryuta Kamizono2015-02-081-1/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The charset of `version` column in `schema_migrations` table is depend on the database default charset and collation rather than the encoding of the connection.
* | | | | | | Merge pull request #18848 from kamipo/add_auto_increment_methodAndrew White2015-02-081-2/+6
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Add `auto_increment?` instead of `extra == 'auto_increment'`
| * | | | | | | Add `auto_increment?` instead of `extra == 'auto_increment'`Ryuta Kamizono2015-02-081-2/+6
| |/ / / / / /
* / / / / / / Missing `@` [ci skip]Ryuta Kamizono2015-02-081-1/+1
|/ / / / / /
* | | | | | rm `Type#number?`Sean Griffin2015-02-073-10/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This predicate is only used in `query_attribute`, and is relatively easy to remove without adding a bunch of is a checks.
* | | | | | rm `Type#text?`Sean Griffin2015-02-076-14/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This predicate was only to figure out if it's safe to do case insensitive comparison, which is only a problem on PG. Turns out, PG can just tell us whether we are able to do it or not. If the query turns out to be a problem, let's just replace that method with checking the SQL type for `text` or `character`. I'd rather not burden the type objects with adapter specific knowledge. The *real* solution, is to deprecate this behavior entirely. The only reason we need it is because the `:case_sensitive` option for `validates_uniqueness_of` is documented as "this option is ignored for non-strings". It makes no sense for us to do that. If the type can't be compared in a case insensitive way, the user shouldn't tell us to do case insensitive comparison.
* | | | | | Move non-type objects into the `Type::Helpers` namespaceSean Griffin2015-02-0719-104/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The type code is actually quite accessible, and I'm planning to encourage people to look at the files in the `type` folder to learn more about how it works. This will help reduce the noise from code that is less about type casting, and more about random AR nonsense.
* | | | | | rm `ActiveRecord::Type::Decorator`Sean Griffin2015-02-074-28/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It only existed to make sure the subclasses of `Delegator` were YAML serializable. As of Ruby 2.2, these are YAML dumpable by default, as it includes https://github.com/tenderlove/psych/commit/2a4d9568f7d5d19c00231cf48eb855cc45ec3394
* | | | | | Push multi-parameter assignement into the typesSean Griffin2015-02-0711-108/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to remove `Type::Value#klass`, as it was only used for multi-parameter assignment to reach into the types internals. The relevant type objects now accept a hash in addition to their previous accepted arguments to `type_cast_from_user`. This required minor modifications to the tests, since previously they were relying on the fact that mulit-parameter assignement was reaching into the internals of time zone aware attributes. In reaility, changing those properties at runtime wouldn't change the accessor methods for all other forms of assignment.
* | | | | | Document the usage of the default option to attributeSean Griffin2015-02-061-0/+14
| | | | | |
* | | | | | A symbol can be passed to `attribute`, which should be documentedSean Griffin2015-02-061-3/+4
| | | | | |
* | | | | | Grammar and RDoc formattingSean Griffin2015-02-062-35/+37
| | | | | |
* | | | | | Docs pass for the attributes APISean Griffin2015-02-062-39/+154
| | | | | |
* | | | | | Raise ArgumentError when passing nil to Relation#mergeRafael Mendonça França2015-02-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nil or false should not be valid argument to the merge method. Closes #12264
* | | | | | Stoping using Relation#merge in default_scopedRafael Mendonça França2015-02-061-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Relation#merge checks if the argument is an array and the only possible returns of build_default_scope is nil or a Relation. Doing this we can raise an ArgumentError when Relation#merge receive a nil value.