| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|\
| |
| |
| |
| | |
ActiveRecord find_in_batches should work without logger
When I set logger to nil both methods from Batches module find_in_batches or find_each should work anyway.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In 94924dc32baf78f13e289172534c2e71c9c8cade the internal default_scope
implementation has changed making it simpler to follow, meaning that the
old usage of with_default_scope has been removed.
With that, order_values was the same argument for both calls to
find_first_with_limit, so remove it and use the existent attribute
for the sake of clarity/simplification.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The previous implementation was necessary in order to support stuff
like:
class Post < ActiveRecord::Base
default_scope where(published: true)
scope :ordered, order("created_at")
end
If we didn't evaluate the default scope at the last possible moment
before sending the SQL to the database, it would become impossible to
do:
Post.unscoped.ordered
This is because the default scope would already be bound up in the
"ordered" scope, and therefore wouldn't be removed by the
"Post.unscoped" part.
In 4.0, we have deprecated all "eager" forms of scopes. So now you must
write:
class Post < ActiveRecord::Base
default_scope { where(published: true) }
scope :ordered, -> { order("created_at") }
end
This prevents the default scope getting bound up inside the "ordered"
scope, which means we can now have a simpler/better/more natural
implementation of default scoping.
A knock on effect is that some things that didn't work properly now do.
For example it was previously impossible to use #except to remove a part
of the default scope, since the default scope was evaluated after the
call to #except.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For example:
class Post < ActiveRecord::Base
default_scope -> { where published: true }
end
class Comment
belongs_to :post
end
When calling `Comment.join(:post)`, we expect to receive only
comments on published posts, since that is the default scope for
posts.
Before this change, the default scope from `Post` was not applied,
so we'd get comments on unpublished posts.
|
| |
| |
| |
| |
| | |
Oops. We need to estalish/remove the connection in the setup/teardown,
else it messes with the fixtures.
|
| |
| |
| |
| | |
Clearly nobody uses this except me. It's fast people!
|
|\ \
| | |
| | | |
Remove depreacted finders
|
| | |
| | |
| | |
| | | |
They were deprecated in 4.0, planned to remove in 4.1
|
| | | |
|
|/ /
| |
| |
| | |
Rails 4.0 has removed attr_protected and attr_accessible feature in favor of Strong Parameters.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
These two methods aren't really statistical helper methods and don't
really belong in any other group which is being delegated for querying,
so I'm moving them to their own group of methods.
I've also changed the `:to => :all` hash syntax to `to: :all`.
|
| |
| |
| |
| | |
[ci skip]
|
|\ \
| | |
| | |
| | |
| | | |
tkhr/add_test_for_AR__CounterCache#update_counters
Add test for AR::CounterCache.update_counters
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Remove Oracle / Sqlserver / Firebird database tasks were deprecated since 4.0.
|
| | | |
| | | |
| | | |
| | | | |
3rd-party.
|
| | | |
| | | |
| | | |
| | | | |
3rd-party.
|
| | | |
| | | |
| | | |
| | | | |
3rd-party.
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
When .find_each is called without a block, return an Enumerator.
|
| | | | |
| | | | |
| | | | |
| | | | | |
This lets us do things like call: .find_each.with_index
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
Change Result#each to return an Enumerator when called without a block.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As with #10992, this lets us call #with_index, etc on the results.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Verbose mode on when running tests
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Right before that in `assert_valid_transaction_action` method we make
sure that `options[:on]` contains values from `ACTIONS` array
(`[:create, :destroy, :update]`) and nothing more (i.e. it could not
contain strings or something else, otherwise the error is raised).
Also I've polished some docs.
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
active models
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Those vars can be used in tasks, which not call load_config.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
In commit d1d7c86d0 I moved setting migrations paths into activerecord's
railtie to remove Rails dependency on databases.rake. However, it
introduced a regression, ENGINE_PATH was not available at the moment, so
engine's migrations where not added properly to paths. Fix was added
at 97a4a771, but it changes a way things work from using ENGINE_PATH to
APP_RAKEFILE. Additionally, the config runs when the code loads, while
previously it ran in the db:load_config rake task
In order to make it more in pair with original version this commit
changes the config to run only on load_config task. This code uses the
fact that defining a task in rake does not overwrite, but only appends.
It also allows to get back to checking for ENGINE_PATH
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Closes #11026
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
fixes #10669
While joining_values special treatment is given to string values.
By flattening the array it ensures that string values are detected
as strings and not arrays.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
currently `post.comments.find(Comment.first.id)` would load all
comments for the given post to set the inverse association.
This has a huge performance penalty. Because if post has 100k
records and all these 100k records would be loaded in memory
even though the comment id was supplied.
Fix is to use in-memory records only if loaded? is true. Otherwise
load the records using full sql.
Fixes #10509
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
fix bad test by making number that fits for integer
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
PR https://github.com/rails/rails/pull/10566 had to be reverted
because after applying the fix test
"test_raise_record_not_found_error_when_invalid_ids_are_passed"
started failing.
In this test invalid_id is being assigned a really large number
which was causing following failure when PR #10566 was applied.
```
RangeError: bignum too big to convert into `long long'
SELECT `interests`.* FROM `interests`
WHERE `interests`.`man_id` = ? AND `interests`.`id` = ?
LIMIT 1 [["man_id", 970345987], ["id", 2394823094892348920348523452345]]
```
This test is not failing in master because when test code
`man.interests.find(invalid_id)` is executed then interests
are fully loaded in memory and no database query is executed.
After PR #10566 was merged then test code
`man.interests.find(invalid_id)` started executing sql query
and hence the error.
In case someone is wondering why the second part of query is not
failing, then that's because the actual query does not require
any variable substituation where the number is large. In that
case the sql generate is following.
```
SELECT `interests`.* FROM `interests`
WHERE `interests`.`man_id` = ? AND `interests`.`id`
IN (8432342, 2390102913, 2453245234523452) [["man_id", 970345987]]
```
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Fix documents for create_join_table [ci skip]
|
| |/ / / / / / |
|
|/ / / / / / |
|
| |_|_|_|/
|/| | | | |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Handle single quotes in PostgreSQL default column values
|