| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
The delegation was needed since passing `relation` with
`relation.bound_attributes`. It should use `relation.arel` in that case.
|
| |
|
|\
| |
| | |
Fix `Relation#exists?` queries with query cache
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
If a connection adapter overrides `select_*` methods, query caching will
doesn't work. This patch changes `select_value` to `select_one` in
`Relation#exists?` to ensure query caching.
Fixes #29449.
|
|\ \
| | |
| | | |
Prevent extra `scope` construction in `find_target`
|
| | |
| | |
| | |
| | | |
Because constructing `scope` is a little expensive.
|
|\ \ \
| |/ /
|/| | |
Refactor #insert_fixtures to use Arel
|
| | | |
|
|\ \ \
| | | |
| | | | |
Remove FK together with column in MySQL
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Unlike with other databses, MySQL doesn't let you remove the column
if there's a FK on this column.
For better developer experience we want to remove the FK together with
the column.
|
|\ \ \ \
| | | | |
| | | | | |
Raise on create for singular association when parent is unpersisted
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
A collection association will raise on `#create_association` when the parent is
unpersisted. A singular association should do the same. This addresses
issue #29219.
|
|\ \ \ \
| | | | |
| | | | | |
Fix `create_table` with query from relation
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If a relation has binds, `connection.to_sql(relation)` without binds
will generate invalid SQL. It should use `relation.to_sql` in that case.
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Don't require 'unscope' to be the same on both sides of an 'or' relation
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Don't map id to primary key in raw_write_attribute
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The `raw_write_attribute` method is used to update a record's attributes
to reflect the new state of the database in `update_columns`. The hash
provided to `update_columns` is turned into an UPDATE query directly,
which means passing an `id` key results in an update to the `id` column,
even if the model uses a different attribute as its primary key. When
updating the record, we don't want to apply the `id` column change to
the primary key attribute, since that's not what happened in the query.
Without the code to handle this case, `write_attribute_with_type_cast`
no longer contains any logic shared between `raw_write_attribute` and
`write_attribute`, so we can inline the code into those two methods.
|
| | | | |
| | | | |
| | | | |
| | | | | |
Fixes #29460.
|
|/ / / / |
|
| |_|/
|/| |
| | |
| | |
| | | |
`sync_with_transaction_state` in `to_key` is unneeded because `id` also
does.
|
|\ \ \
| |/ /
|/| | |
Avoid overwriting the methods of `AttributeMethods::PrimaryKey`
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
Currently the methods of `AttributeMethods::PrimaryKey` are overwritten
by `define_attribute_methods`. It will be broken if a table that
customized primary key has non primary key id column.
It should not be overwritten if a table has any primary key.
Fixes #29350.
|
|/
|
|
| |
This option was added in b9fa354. But it does not seem to work.
|
| |
|
|
|
|
|
| |
load_schema! is overridden by attribute modules, so we need to wait
until it has returned.
|
|\
| |
| | |
Introduce mattr_accessor default option
|
| | |
|
|/ |
|
|\
| |
| |
| |
| | |
Nerian/document_support_for_composite_primary_keys
Document support for composite primary keys
|
| | |
|
|\ \
| | |
| | |
| | |
| | | |
kamipo/prevent_making_bind_param_if_casted_value_is_nil
Prevent making bind param if casted value is nil
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If casted value is nil, generated SQL should be `IS NULL`. But currently
it is generated as `= NULL`. To prevent this behavior, avoid making bind
param if casted value is nil.
Fixes #28945.
|
|\ \ \
| | | |
| | | | |
Consolidate database specific JSON types to `Type::Json`
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Fix `default_scoped` with defined `default_scope` on STI model
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | | |
This regression is caused by d1249c1.
If STI model is defined `default_scope`, `base_rel` is not respected.
I fixed to merge `base_rel` in that case.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Follow up of #29077.
Before:
```sql
SELECT sql FROM sqlite_master WHERE tbl_name NOT IN ("foo") ORDER BY tbl_name, type DESC, name
```
After:
```sql
SELECT sql FROM sqlite_master WHERE tbl_name NOT IN ('foo') ORDER BY tbl_name, type DESC, name
```
> If a keyword in double quotes (ex: "key" or "glob") is used in a
context where it cannot be resolved to an identifier but where a string
literal is allowed, then the token is understood to be a string literal
instead of an identifier.
http://www.sqlite.org/lang_keywords.html
|
|/ / / |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/dont_expose_methods_and_attrs_for_internal_usage
Don't expose methods and attrs for internal usage
|
| |/ / |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Another fix for #28780 based on discussions at #28789
- In PostgreSQL 10 each sequence does not know its `min_value`.
A new system catalog `pg_sequence` shows it as `seqmin`.
Refer https://github.com/postgres/postgres/commit/1753b1b027035029c2a2a1649065762fafbf63f3
- `setval` 3rd argument needs to set to `false` only when the table has no rows
to avoid `nextval(<sequence_name>)` returns `2` where `1` is expected.
- `min_value` is only necessary when the table has no rows. It used to be necessary
since the 3rd argument of `setval` is always `false`.
|
|\ \
| | |
| | |
| | | |
Fix association with extension issues
|
| | |
| | |
| | |
| | |
| | | |
As @matthewd's suggestion, if `klass` has no default scope, it will more
faster.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Some third party modules expects that association returns same proxy
object each time (e.g. for stubbing collection methods:
https://github.com/rspec/rspec-rails/issues/1817).
So I decided that cache the proxy object and reset scope in the proxy
object each time.
Related context: https://github.com/rails/rails/commit/c86a32d7451c5d901620ac58630460915292f88b#commitcomment-2784312
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes the following issues.
* `association_scope` doesn't include `default_scope`. Should use `scope` instead.
* We can't use `method_missing` for customizing existing method.
* We can't use `relation_delegate_class` for sharing extensions. Should extend per association.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/deserialize_raw_value_from_database_for_json
Deserialize a raw value from the database in `changed_in_place?` for `AbstractJson`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`AbstractJson`
Structured type values sometimes caused representation problems (keys
sort order, spaces, etc). A raw value from the database should be
deserialized (normalized) to prevent the problems.
|