| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
This helper no longer makes sense as a separate method. Instead I'll
just have `deserialize` call `cast` by default. This led to a random
infinite loop in the `JSON` pg type, when it called `super` from
`deserialize`. Not really a great way to fix that other than not calling
super, or continuing to have the separate method, which makes the public
API differ from what we say it is.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 1502caefd30b137fd1a0865be34c5bbf85ba64c1.
The test suite for the mysql adapter broke when this commit was used
with MySQL 5.6.
Conflicts:
activerecord/CHANGELOG.md
|
|
|
|
| |
favour of `begin_at` value.
|
|\
| |
| |
| | |
Add `foreign_key_exists?` method.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
As per previous discussions, we want to give users the ability to
reference their own types with symbols, instead of having to pass the
object manually. This adds the class that will be used to do so.
ActiveRecord::Type.register(:money, MyMoneyType)
|
| |
| |
| |
| |
| |
| |
| | |
...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!
|
| | |
|
| |
| |
| |
| |
| | |
Using enum names in SQL strings doesn't actually work, the test was wrong (fixed
in 3dfd1ba).
|
| |
| |
| |
| | |
Make sure we have coverage for both the find/build cases
|
| | |
|
| |
| |
| |
| |
| | |
Also updated the documentation about the new ability to query them normally,
and added test to make sure they work!
|
| |
| |
| |
| |
| |
| |
| | |
```
user = User.create(token: "custom-secure-token")
user.token # => "custom-secure-token"
```
|
|\ \
| | |
| | | |
Extract `DateTimePrecisionTest`
|
| | |
| | |
| | |
| | | |
The datetime precision tests for any adapters is duplicated.
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
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]
|
|\ \
| | |
| | | |
Allow `:precision` option for time type columns
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
This finally removes the warning "WARNING: there is no transaction in progress"
when running Active Record tests using PostgreSQL.
|
| | |
| | |
| | |
| | | |
Also removed some cruft in the `setup` and `teardown` methods.
|
|/ /
| |
| |
| |
| |
| | |
"active_support/testing/stream" is already required in `test_case.rb`.
Furthermore the test "test/cases/migration_test.rb" could no longer be executed
directly.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | |
| | |
| | | |
kamipo/fix_datetime_precision_dumping_zero_for_postgresql
The datetime precision with zero should be dumped
|
| | |
| | |
| | |
| | |
| | | |
`precision: 0` was not dumped by f1a0fa9e19b7e4ccaea191fc6cf0613880222ee7.
However, `precision: 0` is valid value for PostgreSQL timestamps.
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | | |
Add an option `end` to `find_in_batches`
|
| | |
| | |
| | |
| | | |
that complements the `start`parameter to specify where to stop batch processing
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|/ /
| |
| |
| | |
Fixes #18871
|
| |
| |
| |
| | |
Added by 101c19f55f5f1d86d35574b805278f11e9a1a48e.
|
| |
| |
| |
| |
| | |
If timestamp column have the precision, it need to format according to
the precision of timestamp column.
|
|\ \
| | |
| | | |
Respect the database default charset for `schema_migrations` table.
|
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
Add `auto_increment?` instead of `extra == 'auto_increment'`
|
| |/ / |
|
|/ / |
|
| |
| |
| |
| |
| | |
This predicate is only used in `query_attribute`, and is relatively easy
to remove without adding a bunch of is a checks.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
nil or false should not be valid argument to the merge method.
Closes #12264
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The same is not true of `define_attribute`, which is meant to be the low
level no-magic API that sits underneath. The differences between the two
APIs are:
- `attribute`
- Lazy (the attribute will be defined after the schema has loaded)
- Allows either a type object or a symbol
- `define_attribute`
- Runs immediately (might get trampled by schema loading)
- Requires a type object
This was the last blocker in terms of public interface requirements
originally discussed for this feature back in May. All the
implementation blockers have been cleared, so this feature is probably
ready for release (pending one more look-over by me).
|
|\ \
| | |
| | | |
Fix `test_types_line_up` when column type missing
|