| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
[ci skip] /mysql/i -> MySQL, Spell correct in continuation to #15555
|
| | |
|
|\ \
| | |
| | | |
[ci skip] Use `an` for SQL
|
| |/ |
|
| |
| |
| |
| | |
to "without replacement"
|
|/
|
|
|
| |
We've stopped using it internally, in favor of polymorphism. So should
you!
|
|
|
|
| |
Fixes #15705.
|
|\
| |
| | |
Remove `serialized?` from the type interface
|
| | |
|
|\ \
| | |
| | | |
Open extension point for defining options in build_through_record
|
| | |
| | |
| | |
| | | |
This fixes #15496
|
|\ \ \
| | | |
| | | | |
Remove unused `method_missing` definition
|
| | | |
| | | |
| | | |
| | | | |
We always define attribute methods in the constructor or in `init_with`.
|
|\ \ \ \
| |_|_|/
|/| | | |
prevent bad automatic inverse_of association
|
| | | |
| | | |
| | | |
| | | | |
reflecting on wrong association
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
member = Member.new(club: Club.new)
member.save!
Before:
member.current_membership.club_id # => nil
After:
member.current_membership.club_id # => club's id
|
|\ \ \ \
| | | | |
| | | | | |
Detect in-place changes on mutable AR attributes
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We have several mutable types on Active Record now. (Serialized, JSON,
HStore). We need to be able to detect if these have been modified in
place.
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Remove unused column types override
|
| | | | | |
|
|\ \ \ \ \
| |_|_|_|/
|/| | | | |
Reorder test which does not represent real world usage
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
We don't generally modify our classes at runtime like this. Let's create
the instance after the class is created. Original commit doesn't imply
that this was intentional behavior.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
variables [ci skip]
Thanks to @matthewd for the excellent feedback! :heart:
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
skip]"
This partially reverts commit 1a203d5e07f639332880099fab610b886b1742fc.
Reason: It was committed by accident
|
|\ \ \
| | | |
| | | | |
Ensure we always define attribute methods
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Introduce an Attribute object to handle the type casting dance
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
There's a lot more that can be moved to these, but this felt like a good
place to introduce the object. Plans are:
- Remove all knowledge of type casting from the columns, beyond a
reference to the cast_type
- Move type_cast_for_database to these objects
- Potentially make them mutable, introduce a state machine, and have
dirty checking handled here as well
- Move `attribute`, `decorate_attribute`, and anything else that
modifies types to mess with this object, not the columns hash
- Introduce a collection object to manage these, reduce allocations, and
not require serializing the types
|
| | | | | |
|
| |/ / /
|/| | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We guarantee that `model.value` does not change after
`model.save && model.reload`. This requires type casting user input for
non-string types.
|
|\ \ \ \
| | | | |
| | | | | |
Add a test to ensure we don't get a performance regression on #hash
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Use a conditional rather than early return in `id`
|
| |/ / / / |
|
|/ / / / |
|
|\ \ \ \
| |_|/ /
|/| | | |
Fix performance regression on preloading HABTM associations
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We'd spend a lot of time calling `hash` and `eql?` on the join model,
which has no primary key. Calling `id` with no primary key is a really
slow way to get back `nil`, so we can improve the performance there.
However, even with the escape clause, we *still* weren't getting high
enough performance, as we were checking the primary key too much. `hash`
will always return `nil.hash` for records with no id, and `==` will
always return `false`. We can optimize those cases in the HABTM join
model.
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
Topics call `serialize :content`, which means that the values in the
database should be YAML encoded, and we would only expect to receive
YAML strings to `update_column` and `update_columns`.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
morgoth/fix-automatic-maintaining-test-schema-for-sql-format
ActiveRecord::Migration.maintain_test_schema! doesn't work with structure.sql
Conflicts:
activerecord/CHANGELOG.md
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
schema format.
Additionally:
* It changes `purge` task on `sqlite3` adapter to recreate database file, to
be consistent with other adapters.
* Adds `purge` step when loading from `schema.rb`
|
|\ \ \ \
| | | | |
| | | | | |
Remove unused require
|
| | | | |
| | | | |
| | | | |
| | | | | |
We're not longer using `ipaddr` in schema dumper
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The column name given by the adapter doesn't include the table
namespace, so going through the hashed version of the result set causes
overridden keys.
Fixes #15649
|
|\ \ \ \
| | | | |
| | | | | |
Refactor determination of max updated timestamp
|
| | | | |
| | | | |
| | | | |
| | | | | |
`[].max # => nil`
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
begin refactoring add_constraints by moving join keys
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
add_constraints is complicated and difficult to read. This is the
beginning of a long process of refactoring this code. First step:
moved the join keys out of AssociationScope and into reflection.
We then don't need to call `reflection` because now reflection is
`self`.
`foreign_key` must be named something else because reflection already has a
`foreign_key` method and when passed into `JoinKeys` it was getting the
wrong assignment. `reflection_foreign_key` seemed to be an appropriate name.
I also named `key` `reflection_key` to match `reflection_foreign_key`.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
rm cached attributes
|