| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This refactoring revealed the need for another form of decoration, which
takes a proc to select which it applies to (There's a *lot* of cases
where this form can be used). To avoid duplication, we can re-implement
the old decoration in terms of the proc-based decoration.
The reason we're `instance_exec`ing the matcher is for cases such as
time zone aware attributes, where a decorator is defined in a parent
class, and a method called in the matcher is overridden by a child
class. The matcher will close over the parent, and evaluate in its
context, which is not the behavior we want.
|
|\ \ \
| | | |
| | | | |
Refactor application of type decorators into an object
|
| | | | |
|
|/ / / |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Skip migration check if adapter doesn't support it
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
[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`
|